c# - C# 中是否有泛型数字类型?

标签 c# .net

我真的很喜欢一个泛型数字类型作为 Func<TInput, THere, TResult> 的第二个泛型类型参数。下面给出,因此我可以根据需要提供整数或 double 或小数。

var _resultSelectors = new Dictionary<string, Func<DateTime, /*here*/ double, DateTime>>();

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

缺少:

  1. 制作我自己的字体;或
  2. 使用对象并装箱一个值类型并拆箱;或
  3. 使用dynamic关键字,

在 C# 中是否有正确的方法来做到这一点?

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

我猜 C# 中没有这样的东西,但我想我会问一下以确定。

最佳答案

不,没有。泛型和算术运算( +-*/ 等)根本无法一起工作。这是一个多次提出的问题,C# 设计委员会从未解决过(公平地说,这个功能也需要在 CLR 上工作,正如 Eric Lippert 在进一步链接的回答中指出的那样)。

奇怪的是,如果您检查 .NET Framework 的源代码,您会发现在某个开发阶段有一个 IArithmetic<T>接口(interface),但它被废弃了;见here .

您可以在这个 SO answer 中阅读更多相关信息.

关于c# - C# 中是否有泛型数字类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38099576/

相关文章:

c# - 带有实例计数器的基类

c# - COM 互操作 : What should I do to make a C# property usable as a VARIANT from VBA

c# - C#中的tabcontrol页面清空所有控件

c# - 在 Entity Framework 中为每个用户使用序列字段

c# - 用于包装 C 库的 P/Invoke 或 C++/CLI

c# - ASP.NET - @ 语法和 <% %> 之间的区别?

c# - 如何在C#上获取字符串的中心部分

c# - 使用 ASP.NET MVC3 中的路由在 url 末尾添加查询字符串

vb.net - 查找目录中的所有目录并仅返回名称

.net - Math.Max 上的 F# 类型推断