C# 泛型约束

标签 c# generics constraints

<分区>

是否可以枚举在泛型约束中“可用”的类型?

T MyMethod<t>() where T : int, double, string

我为什么要这样做是因为我有一个小型评估引擎,并且想 像这样编写代码:

bool expression.Evaluate<bool>();

int expression.Evaluate<int>();

但我想禁止

MyCustomClass expression.Evalaute<MyCustomClass>();

最佳答案

如果泛型类型参数的可能性很小,那么该方法不是真正的泛型。泛型的要点是允许类型和方法的参数化,以便您可以根据需要创建无限多不同的类型和方法。如果只有三种可能的类型,则编写三种方法。也就是说,创建重载,不要使用泛型。

关于C# 泛型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2391968/

相关文章:

c# - GMAIL SMTP : A call to SSPI failed exception - The function requested is not supported

c# - 从 C# 将对象传递给 Lua 脚本

swift - 如果这个类是通用的,如何检查一个对象是否是给定类的实例?

java - 列表的子类化如何工作?

c# - 如何递归遍历嵌套泛型集合?

c# - 使用枚举不符合 CLS

c# - 在 C# 中将调试字符串排除在构建之外

sql - 如何在 Oracle 中创建约束以避免重复值?

sql - 尝试向现有表添加约束时出现“创建默认约束无效”错误

mysql - 由于违反完整性约束,Propel 无法删除