c# - .Net 对结构类型的泛型约束

标签 c# .net generics constraints

我正在尝试创建一个泛型类,其实现取决于类型是 Int32Int64doublefloat ,或十进制

class Calculator<T> where T: int, double, float, decimal

这是不对的,但我在语法上遇到了问题

最佳答案

I am trying to create a generic class whose implementation depends on the type being an Int32, Int64, double, float, or decimal.

那么它就不是通用的。通用类型是一种对所有可能的类型参数都以相同方式工作的类型,例如通用队列或通用字典。

“计算器”类是为此类功能提供的最常见场景;我们一直收到此功能请求。我们假设将其用于尚未公布且不存在的假设 future 版本的 C#。正确执行此功能需要 CLR 的假设 future 版本的大量支持,该版本也尚未公布且不存在。随着这些事情的进行,场景的优先级并不是特别高,所以如果没有实现,请不要失望。

可以通过多种方式显示此类功能。例如,我们可以说您可以将静态方法放在接口(interface)中。数学运算符是静态方法,因此您可以将类型参数约束为实现静态接口(interface) IAddable 或类似东西的类型。

请记住,Eric 对不存在且可能永远不存在的未发布产品的 future 所做的任何思考仅供您娱乐。

关于c# - .Net 对结构类型的泛型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7690877/

相关文章:

c# - 如何将具有索引引用的 JSON 数据反序列化为强类型 C# 对象?

c# - 如何调试 "cannot convert to system.collections.generic.list"错误

c# - 所有数学运算都以整数形式返回?

c# - 交换 Azure Web App 部署槽会注销 ASP.NET Core RC2 中的所有用户

c# - 通过仅显示特定字段来格式化 JSON 输出

c# - 什么是托管代码和非托管代码?

Python 相当于.Net 的密封类

c++ - iso c++ 禁止声明没有类型的泛型

java - 当对象类型可用时,为什么需要通配符?

ios - Swift 泛型类型属性和方法