[英]C# how to overload operator + for universal class
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'的不透明體。
請幫助解決。
通過將類的模板化私有成員更改為dynamic
類型,可以自行承擔克服該限制的風險 。 例:
public struct Vector3<T>
{
private dynamic X { get; set; }
private dynamic Y { get; set; }
private dynamic Z { get; set; }
...
....
}
不幸的是,在C#
沒有辦法將模板參數限制為數值(我想這就是您要實現的目標)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.