W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵(lì)
運(yùn)算符可以為自定義類型重載。
以下符號運(yùn)算符可以重載:
+(unary)
-(unary)
!
~
++
--
+
-
*
/
%
&
|
^
<<
>>
==
!=
>
<
>=
<=
以下運(yùn)算符也是可重載的:隱式和顯式轉(zhuǎn)換true和false。
復(fù)合賦值運(yùn)算符(例如,+ =,/ =)通過重寫非復(fù)合運(yùn)算符(例如,+,/)而隱式重寫。
條件運(yùn)算符&&和||通過重寫按位運(yùn)算符&和|隱式重寫。
運(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é)果。
至少一個(gè)操作數(shù)必須是聲明操作符函數(shù)的類型。
在下面的示例中,我們定義一個(gè)名為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);
}
}
這個(gè)重載允許我們給一個(gè)Coin添加一個(gè)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)該實(shí)現(xiàn)IComparable和IComparable <T>。
隱式和顯式轉(zhuǎn)換是可重載的操作符。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: