嗨,以下方法可能会以某种方式识别出它只能是int,double,decimal或float,并使用+运算符添加它们。如果我使用动态,那么这是一个问题,因为我希望比较不同类型的添加时间,如果它们被转换为动态,我不知道会产生什么影响。感谢。
public static void Addition<T>(T number) where T:int, double, decimal, float
{
//calculate elapsed time for operation
var x= number + number;// cannot add T + T
}
答案 0 :(得分:1)
将参数约束为编译时已知的有限类型集之一的唯一方法是为每个类型创建重载。在这种情况下,这意味着int
,double
,decimal
和float
的重载。
无法将泛型参数约束为对该类型存在给定运算符重载的参数。