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)
补偿缺乏协变返回类型.