.Net和In C#上的多态数字

Ben*_*sen 3 .net c# performance abstraction numeric

真的很遗憾,在.Net中没有数字的多态性,即没有统一不同类型的数字类型的数字接口,如bool,byte,uint,int等.在极端情况下,我们想要一个完整的抽象包代数类型.

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);
}
Run Code Online (Sandbox Code Playgroud)

我有点害怕这段代码的执行速度,但至少它是抽象的.

没有运营商超载良好......

还有其他想法吗?

.Net看起来不像一个可行的长期平台,如果它不能拥有我认为的这种抽象 - 并且效率很高.

抽象是重用.

更新:

到目前为止,这是一个示例实现类型签名:

public struct Integer32 : INumeric<Integer32, Int32>, IOrder<Integer32, Int32>
Run Code Online (Sandbox Code Playgroud)

补偿缺乏协变返回类型.

Nic*_*ick 5

有人已经开始写一些可以解决你的问题的东西了.它被称为通用运算符,可在杂项实用程序库中找到.