共用方式為


可多載的運算子 (C# 程式設計手冊)

C# 可使用 operator 關鍵字定義靜態成員函式,以允許使用者定義型別多載運算子。 並不是所有的運算子都可被多載,一些運算子也有多載的限制,如下表所列:

運算子

多載性

+-!~++--truefalse

這些一元的運算子可被多載。

+-*/%&|, ^, <<, >>

這些二元的運算子可被多載。

==!=<><=>=

比較運算子可以多載 (不過請先參閱本表後面的注意事項)。

&&||

條件邏輯運算子不可以多載,但這些運算子是使用 & 和 |,因此可以多載。

[]

陣列索引運算子不可被多載,但您可定義索引子。

(T)x

轉型運算子不可被多載,但您可定義新的轉換運算子 (請參閱 explicitimplicit)。

+=-=*=/=%=&=|=^=<<=>>=

指派運算子不可以多載,但像 += 是使用 + 來評估,所以可以多載。

=, ., ?:, ??, ->, =>, 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# 程式設計手冊)

運算子 (C# 程式設計手冊)

C# 運算子

概念

C# 程式設計手冊

其他資源

為什麼會多載的運算子永遠靜態的因為 C#?