public class MyClass
{
public static void Main()
{
test<double> tt= new test<double>();
Console.WriteLine(tt.add(1.1,2.2).ToString());
}
class test<T>
{
public test(){}
public T add(T a,T b)
{
return a+b;
}
}
}总是报错 Operator '+' cannot be applied to operands of type 'T' and 'T'用double 类型也不能相加吗??
{
public static void Main()
{
test<double> tt= new test<double>();
Console.WriteLine(tt.add(1.1,2.2).ToString());
}
class test<T>
{
public test(){}
public T add(T a,T b)
{
return a+b;
}
}
}总是报错 Operator '+' cannot be applied to operands of type 'T' and 'T'用double 类型也不能相加吗??
http://ninputer.cnblogs.com/archive/2006/04/14/374921.html
只能这样告诉你,你的理解是错的!
若T可以相加,这此代码将应该得以执行。因此,需要T上约束一个“相加”概念。而不是相加接口,相加类型什么的。你不知道“概念”是什么意思,你就会觉得.NET泛型给你提供的约束功能是好东西!应该多加使用!对吗?但是不对,这不是泛型。我们需要的是“概念”而不是接口/基类/强类型和所有你能想到但不正确的东西。
如果最佳的做法不能做事情,你选择不做,我选择用次最佳的做法做事情。重申一遍,只要没有“概念”约束,那么接口约束/基类约束都是没用,甚至错误的做法。用这条途径得到的“强类型”与泛型格格不入。new, struct和class约束才是概念约束的例子。