0
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'的視角。C#如何爲通用類重載operator +
請幫忙解決。
我相信如果您在Google中輸入錯誤消息,您會發現很多答案。 – 2015-04-03 21:28:40
看看你要做的事:構建一個可以將+應用於任何類型的泛型方法。整數,字符串,GUIDs,System.Net.WebClient,匿名類,System.Reflection.AmbiguousMatchException ....任何類都是什麼。這是不可能的。您需要將T限制爲某個子集接口,以便編譯器知道它實現了+運算符。 – 2015-04-03 21:31:33
這裏有很多很好的信息http://stackoverflow.com/questions/32664/is-there-a-constraint-that-restricts-my-generic-method-to-numeric-types(也不包括'dynamic' Tigran的建議)。 – 2015-04-03 22:39:45