共用方式為


運算子多載

更新:2007 年 11 月

運算子多載可允許利用類似 "+"、"-"、"=" 和 "!=" 的運算子來結合和比較型別。將運算子多載加入到型別之後,即可讓開發人員將此型別當做內建的基本型別 (Primitive Type) 一樣來使用此型別。只有當運算的意義對此型別而言是容易瞭解時 (例如,為了支援加入表示數值的型別之兩個執行個體),才應該執行運算子多載。運算子多載不應該用來為不是容易瞭解的運算提供語法捷徑。

下列範例將示範 DateTime 類別的加法運算之簽章。

[Visual Basic]

Public Shared Function op_Addition(ByVal d As DateTime, _
ByVal t As TimeSpan _
) As DateTime

[C#]

public static DateTime op_Addition(
DateTime d, 
TimeSpan t
);

考慮在應該類似基本型別運作的型別中定義運算子多載。

例如,String 會定義運算子 == 和運算子 !=。

請勿提供運算子多載,除非至少有一個運算元具有定義此多載的型別。

C# 編譯器會強制使用這項方針。

一定要以對稱方式來多載運算子。

例如,如果您多載相等運算子,也應該多載不相等運算子。同樣地,如果您多載小於運算子,也應該要多載大於運算子。

請考慮為方法提供對應到每一個多載運算子的易記名稱。

您必須履行此方針,使其符合 CLS 標準。下表包含了運算子符號,以及其對應的替代方法和運算子名稱的清單。

C# 運算子符號

替代方法的名稱

運算子名稱

未定義

ToXxxFromXxx

op_Implicit

未定義

ToXxxFromXxx

op_Explicit

+ (二元)

Add

op_Addition

- (二元)

Subtract

op_Subtraction

* (二元)

Multiply

op_Multiply

/

Divide

op_Division

%

Mod

op_Modulus

^

Xor

op_ExclusiveOr

& (二元)

BitwiseAnd

op_BitwiseAnd

|

BitwiseOr

op_BitwiseOr

&&

And

op_LogicalAnd

||

Or

op_LogicalOr

=

Assign

op_Assign

<<

LeftShift

op_LeftShift

>>

RightShift

op_RightShift

未定義

LeftShift

op_SignedRightShift

未定義

RightShift

op_UnsignedRightShift

==

Equals

op_Equality

>

CompareTo

op_GreaterThan

<

CompareTo

op_LessThan

!=

Equals

op_Inequality

>=

CompareTo

op_GreaterThanOrEqual

<=

CompareTo

op_LessThanOrEqual

*=

Multiply

op_MultiplicationAssignment

-=

Subtract

op_SubtractionAssignment

^=

Xor

op_ExclusiveOrAssignment

<<=

LeftShift

op_LeftShiftAssignment

%=

Mod

op_ModulusAssignment

+=

Add

op_AdditionAssignment

&=

BitwiseAnd

op_BitwiseAndAssignment

|=

BitwiseOr

op_BitwiseOrAssignment

,

Comma

op_Comma

/=

Divide

op_DivisionAssignment

--

Decrement

op_Decrement

++

Increment

op_Increment

- (二元)

Negate

op_UnaryNegation

+ (二元)

Plus

op_UnaryPlus

~

OnesComplement

op_OnesComplement

Portions Copyright 2005 Microsoft Corporation.All rights reserved.

Portions Copyright Addison-Wesley Corporation.All rights reserved.

如需設計方針的詳細資訊,請參閱由 Krzysztof Cwalina 和 Brad Abrams 所著,並由 Addison-Wesley 於 2005 年發行的「Framework 設計方針:可重複使用之 .NET 程式庫的慣例、慣用語法和模式」一書。

請參閱

其他資源

成員設計方針

開發類別庫的設計方針