【发布时间】:2015-04-03 21:23:03
【问题描述】:
public struct Vector3<T>
{
private T X { get; set; }
private T Y { get; set; }
private T Z { get; set; }
public Vector3(T x, T y, T z) : this()
{
this.X = x;
this.Y = y;
this.Z = z;
}
public static Vector3<T> operator +(Vector3<T> v1, Vector3<T> v2)
{
return new Vector3<int>(v1.X + v2.X, v1.Y + v2.Y, v1.Z + v2.Z);
}
}
给出错误:无法将运算符“+”应用于“T”和“T”类型的操作数。
请帮忙解决。
【问题讨论】:
-
如果你在谷歌中输入错误信息,我相信你会找到很多答案。
-
看看你要求它做什么:构造一个可以将 + 应用于任何类型的泛型方法。整数、字符串、GUID、System.Net.WebClient、匿名类、System.Reflection.AmbiguousMatchException ....任何类。这是不可能的。您需要将 T 限制为某个子集接口,以便编译器知道它实现了 + 运算符。
-
stackoverflow.com/questions/32664/… 这里有很多很好的信息(也不包括 Tigran 的
dynamic建议)。
标签: c# overloading operator-keyword