<分区>
是否可以枚举在泛型约束中“可用”的类型?
T MyMethod<t>() where T : int, double, string
我为什么要这样做是因为我有一个小型评估引擎,并且想 像这样编写代码:
bool expression.Evaluate<bool>();
或
int expression.Evaluate<int>();
但我想禁止
MyCustomClass expression.Evalaute<MyCustomClass>();
<分区>
是否可以枚举在泛型约束中“可用”的类型?
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/