天天看點

運算符重載(OperatorOverloads)C#語言

既然學到這兒了,就把運算符重載(OperatorOverloads)學明白。

以楚老師講的一個例子為例

寫一個矢量類(Vector),在定義三個類對象vect1、vect2、vect3。通過數學可以了解到向量之間是可以進行加法操作的。而你要直接寫vect1+vect2編譯器是會報錯的,因為目前的編譯器還沒有做到那麼智能,是以就需要人工進行重載的操作了,操作的對象是“+”。

二進制運算符,第一個參數是放在參數左邊的值一般命名為lhs,第二個參數一般命名為rhs.

下面是重載運算符”+“的核心代碼

public static Vector operator +(Vector lhs, Vector rhs)
        {
            Vector result = new Vector(lhs);
            result.x += rhs.x;
            result.y += rhs.y;
            result.z += rhs.z;
            return result;
        }
           

重載好運算符後,下面是應用的地方

Vector vect1, vect2, vect3;
            vect1 = new Vector(1.0, 4.0, 3.0);
            vect2 = new Vector(vect1);
            vect3 = vect1 + vect2;
           

最後這個加号就可以執行兩個向量之間的加法操作了。其實運算符重載(OperatorOverloads)就這麼點事兒,了解了解,在看一些運算符重載(OperatorOveraloads)的規則,比如像重載比較運算符的時候(大于、小于)必須成對重載。然後就可以了。