可操作界面.net

IOperable interface .net

.Net中有这样的界面吗

public interface IOperable<T>
{

    T Add(T add);
    T Substract(T subs);
    T Multiply(T mult);
    T Divide(T div);
    //and so on
}

对于您知道可操作的管理泛型?甚至原始人。

例如,对于 class Interval<T>,如果 End 和 Start 为 IOperableEnd.Substract(Start);),我们将能够获得长度。

我知道 ISet<T> 操作,但该方法适用于非连续的元素,但对于连续元素,我在 c# 中没有看到任何方法。

如果没有,为什么不存在于当前的 .Net 中?发展原因?哲学的? 有没有图书馆提供这种方法?

"Nope".

如果发生这种情况,几乎可以肯定不会通过接口,而是:通过通用运算符约束支持。

接口存在一些语义问题:并非所有数字系统都实现所有相同的运算符 - 结果并不总是相同(例如,向量/矩阵的除法和乘法;或者:您可以添加并减去两个 TimeSpan,但你不能将它们相乘或相除,等等);甚至当它们这样做时:含义可能会改变(整数除法与浮点除法不同,例如,对于无符号数据类型,减法和取反变得很奇怪)。

通用运算符约束已经讨论过几次,但从未进入语言。

您可以使用 dynamic 作弊,但这涉及 "boxing",因此会有一些不小的开销。或者 MiscUtil.

中内置(或曾经)一些通用运营商服务