共用方式為


轉換運算子

更新:2007 年 11 月

轉換運算子會將物件從一個型別轉換成另一個型別;轉換運算子可以是隱含或明確的。隱含轉換運算子不需要在原始程式碼中指定型別轉換,也可以執行轉換。明確轉換運算子需要在原始程式碼中有型別轉換,才可執行轉換。

下列簽章將顯示 Point 類別的明確轉換運算子,以便在 PointSize 之間進行轉換。

[Visual Basic]

Public Shared Function op_Explicit( _
ByVal p As Point _
) As Size

[C#]

public static Size op_Explicit(
Point p
);

如果使用者並未明確預期有這類轉換,請勿提供轉換運算子。

理想狀況下,應該有客戶研究資料來支援轉換運算子的定義。另外,定義此運算子的支援可以是範例的形式,其中有一個或多個類似的型別需要這類轉換。

不要在型別的定義域之外定義轉換運算子。

例如,Int32DoubleDecimal 都是數字型別,而 DateTime 則不是。將 Double 型別轉換成 DateTime 型別的作業不應該以轉換運算子的形式來實作,請使用建構函式將一個型別轉換成不在相同定義域中的另一個型別。

如果轉換可能會有耗損的情況,請不要提供隱含轉換運算子。

例如,從 DoubleSingle 之間不應該有隱含轉換,因為 Double 的精確度高於 Single。可以提供明確轉換運算子來進行這種耗損的轉換。

不要從隱含轉型擲回例外狀況。

隱含轉型是由系統所呼叫;使用者可能不會察覺正在進行轉換,所以很難去偵錯程式碼。

如果呼叫轉型運算子會產生耗損的轉換,而此運算子的合約不允許有耗損的轉換,則要擲回 System.InvalidCastException。

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 程式庫的慣例、慣用語法和模式」一書。

請參閱

其他資源

成員設計方針

開發類別庫的設計方針