C# 運(yùn)算符重載

2018-01-22 17:09 更新

C# 運(yùn)算符重載

運(yùn)算符可以為自定義類型重載。

以下符號運(yùn)算符可以重載:


+(unary) 
-(unary) 
! 
~
++
--
+ 
-
*
/
% 
& 
|
^
<<
>> 
== 
!=
>
<
>= 
<=

以下運(yùn)算符也是可重載的:隱式和顯式轉(zhuǎn)換true和false。

復(fù)合賦值運(yùn)算符(例如,+ =,/ =)通過重寫非復(fù)合運(yùn)算符(例如,+,/)而隱式重寫。

條件運(yùn)算符&&和||通過重寫按位運(yùn)算符&和|隱式重寫。

運(yùn)算符函數(shù)

運(yùn)算符通過聲明運(yùn)算符函數(shù)重載。

函數(shù)的名稱使用運(yùn)算符關(guān)鍵字和運(yùn)算符符號指定。

運(yùn)算符函數(shù)必須標(biāo)記為static和public。

操作符函數(shù)的參數(shù)表示操作數(shù)。

運(yùn)算符函數(shù)的返回類型表示表達(dá)式的結(jié)果。

至少一個操作數(shù)必須是聲明操作符函數(shù)的類型。

在下面的示例中,我們定義一個名為Coin的結(jié)構(gòu),然后重載+運(yùn)算符:


public struct Coin {
    int value;
    public Coin (int c) {
       value = c;
    }
    public static Coin operator + (Coin x, int p) {
       return new Coin (x.value + p);
    }
}

這個重載允許我們給一個Coin添加一個int:


Coin B = new Coin (2);
Coin A = B + 2;

重載賦值運(yùn)算符會自動支持相應(yīng)的復(fù)合賦值運(yùn)算符。

在我們的示例中,由于我們覆蓋+,我們也可以使用+ =:


B += 2;

注意

C#編譯器強(qiáng)制執(zhí)行要定義的邏輯對的運(yùn)算符。這些運(yùn)算符是(==!=),(<>)和(<=> =)。

如果你重載==和!=,你通常需要重寫對象上定義的Equals和GetHashCode方法。

如果你重載(<>)和(<=> =),你應(yīng)該實現(xiàn)IComparable和IComparable <T>。

隱式和顯式轉(zhuǎn)換是可重載的操作符。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號