簡體   English   中英

C#如何為通用類重載運算符+

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM