可多載的運算子 (C# 程式設計手冊)
C# 可使用 operator 關鍵字定義靜態成員函式,以允許使用者定義型別多載運算子。 並不是所有的運算子都可被多載,一些運算子也有多載的限制,如下表所列:
運算子 |
多載性 |
---|---|
這些一元的運算子可被多載。 |
|
這些二元的運算子可被多載。 |
|
比較運算子可以多載 (不過請先參閱本表後面的注意事項)。 |
|
條件邏輯運算子不可以多載,但這些運算子是使用 & 和 |,因此可以多載。 |
|
陣列索引運算子不可被多載,但您可定義索引子。 |
|
指派運算子不可以多載,但像 += 是使用 + 來評估,所以可以多載。 |
|
=, ., ?:, ??, ->, =>, f(x), as, checked, unchecked, default, delegate, is, new, sizeof, typeof |
這些運算子不可被多載。 |
注意事項 |
---|
如果要多載比較運算子,則必須成對多載,也就是說,如果多載 ==,則也必須多載 !=。反向也成立,而對於 < 和 >,以及 <= 和 >= 也是類似的情形。 |
若要在自訂類別上多載運算子,必須用正確的簽章在類別上建立方法。 方法必須命名為 "operator X",其中 X 是多載運算子的名稱或符號。 一元運算子有一個參數,而二元運算子則有兩個參數。 無論是一元或二元,參數的型別都必須和宣告運算子的類別或結構型別相同,如下列範例所示:
public static Complex operator +(Complex c1, Complex c2)
如需詳細資訊,請參閱 HOW TO:使用運算子多載建立複數類別 (C# 程式設計手冊)。
請參閱
參考
概念
其他資源
為什麼會多載的運算子永遠靜態的因為 C#?