.Net 中没有数字的多态性,即没有统一不同类型的数字类型(如 bool、byte、uint、int 等)的 INumeric 接口,这真是太可惜了。极端的人想要一个完整的抽象包代数类型。
Joe Duffy 有一篇关于这个问题的文章:
http://www.bluebytesoftware.com/blog/CommentView,guid,14b37ade-3110-4596-9d6e-bacdcd75baa8.aspx
您将如何在 C# 中表达这一点,以便在不影响 .Net 或 C# 的情况下对其进行改造?
我有一个想法,首先定义一个或多个抽象类型(接口,如 INumeric - 或比这更抽象),然后定义实现这些的结构并包装 int 等类型,同时提供返回新类型的操作(例如 Integer32 : INumeric;加法将被定义为
public Integer32 Add(Integer32 other)
{
return Return(Value + other.Value);
}
我有点害怕这段代码的执行速度,但至少它是抽象的。
没有运算符重载善良...
还有其他想法吗?
如果.Net 不能具有我认为的这种抽象并且对此保持高效,它看起来就不像一个可行的长期平台。
抽象是重用。
更新:
到目前为止,这是一个示例实现类型签名:
public struct Integer32 : INumeric<Integer32, Int32>, IOrder<Integer32, Int32>
补偿协变返回类型的缺乏。