微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#中是否有通用数字类型?

我真的喜欢一个通用数字类型作为Func< TInput的第二个通用类型参数,TRereult>给出如下,所以我可以提供一个整数或一个双倍或十进制,当我喜欢.
var _resultSelectors = new Dictionary<string,Func<DateTime,/*here*/ double,DateTime>>();

// so I can do
_resultSelector.Add("foo",(DateTime dt,int x) => ...);
_resultSelector.Add("bar",double d) => ...);
_resultSelector.Add("gar",float f) => ...);
_resultSelector.Add("har",decimal d) => ...);

缺乏:

制作我自己的类型;要么
使用对象和Boxing一个值类型并取消装箱;要么
>使用动态关键字,

在C#中有正确的方法吗?

我猜Java有一个可能符合我的要求的Number类,但是我想知道C#是否有类似的东西.

我猜C#中没有这样的东西,但是我以为我会确定的.

解决方法

不,那里没有.泛型和算术运算(,–,*,/等)根本不起作用.这是一个提出了很多次的问题,而C#设计的comitee从来没有解决(公平地说,这个功能也需要在CLR上工作,正如Eric Lippert在答复中所指出的那样).

当然,如果您检查.NET Framework的源代码,您会发现在某些开发阶段,有一个IArithmetic< T>界面,但已被报废;见here.

您可以在SO answer中阅读更多信息.

原文地址:https://www.jb51.cc/csharp/94335.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐