两个 int 相加的方法为:
int Add(int a, int b)
{
return a + b;
}
以上完全正确吧,那使用泛型呢?如:
T Add<T>(T a, T b)
{
return a + b; // 我知道这样是不行的,但我要实现这相加操作
}
则出现错误:运算符“+”无法应用于“T”和“T”类型的操作数我也知道原因,问题是我该如何实现 a + b 呢?一定要使用反射么?有没简单点的方法?别告诉我一个类型一个类型的判断谢谢了
int Add(int a, int b)
{
return a + b;
}
以上完全正确吧,那使用泛型呢?如:
T Add<T>(T a, T b)
{
return a + b; // 我知道这样是不行的,但我要实现这相加操作
}
则出现错误:运算符“+”无法应用于“T”和“T”类型的操作数我也知道原因,问题是我该如何实现 a + b 呢?一定要使用反射么?有没简单点的方法?别告诉我一个类型一个类型的判断谢谢了
public static <return type> operator <op> (parameter list)
{implementation code}
规则
要求public static操作符
返回值应为类类型,不能是void
op是双目,单目或关系操作符,以及相应数目的参数。比如
public static T operator +(T a,T b)
{
//你想返回的内容
}
我要实现的是:
T Add<T>(T a, T b)
{
return a + b; // 我知道这样是不行的,但我要实现这相加操作
}
T Add<T>(T a, T b)
{
return a + b; // 我知道这样是不行的,但我要实现这相加操作
}要实现 a + b,T Add<T>(T a, T b) 方法体该如何写?
------------
则出现错误:运算符“+”无法应用于“T”和“T”类型的操作数
我也知道原因,问题是我该如何实现 a + b 呢?
一定要使用反射么?有没简单点的方法?别告诉我一个类型一个类型的判断
----------------先问自己,小学是老师告诉过你,两个不知道类型的东西怎么相加了吗?如果有听你老师的。不知道类型,在C#.NET里是不能被相加的。
假如是 a 和 b 是 int 类型,那么结果也为 a + b
假如是 a 和 b 是 float 类型,那么结果也为 a + b
假如是 a 和 b 是 string 类型,那么结果也为 a + b
假如是 a 和 b 是 其他类型,那么结果也为 a + b(只要类型支持相加)
假如是 a 和 b 是 int 类型,那么结果也为 a + b
假如是 a 和 b 是 float 类型,那么结果也为 a + b
假如是 a 和 b 是 string 类型,那么结果也为 a + b
假如是 a 和 b 是 其他类型,那么结果也为 a + b(只要类型支持相加) 清除了没?
{
//把你传进来的T类型转换成object类型或者是string类型,然后转成你要相加的类型就OK了
object obj = a;
int c = (int)obj;
object obj1=b;
int d=(int)obj1;
return a+b;
}
{
if (a.GetType().FullName == "System.Int32")
{
object v1 = a;
object v2 = b;
int x = (int)v1 + (int)v2;
Console.WriteLine(x);
}
}如果想扩展的话,把if扩展成switch就可以了