跳轉至內容

C# 程式設計/型別轉換

來自 Wikibooks,開放世界中的開放書籍

型別轉換

[編輯 | 編輯原始碼]

型別轉換是將值從一種型別轉換為另一種型別的方式。主要存在兩種型別的轉換,隱式轉換和顯式轉換。當值型別轉換為物件或引用型別時,會發生裝箱。

隱式轉換

[編輯 | 編輯原始碼]

隱式轉換是編譯器自動執行值轉換的方式。當且僅當不會發生資訊丟失時才會發生這種情況。例如,將資料從較小的整數型別轉換為較大的型別,或將派生型別轉換為基型別。

int iValue = 5000;

double dDistance = iValue ;

public class Animal { [] };

public class Mammal : Animal { [] };

public class Cat : Mammal
{
    […]
}

Mammal mammal = new Cat();

此外,此示例也可以工作。

int num = 9513458219;
long bigNum = num;

顯式轉換

[編輯 | 編輯原始碼]

這種型別的轉換必須由開發人員指定,因為可能會丟失資料。

double dPi = 3.1415926535;

int iValue = (int)dPi;   // iValue = 3
int iValue_2 = Convert.ToInt32(dPi);   // iValue_2 = 3
double dPi = 3.1415926535;

object oPi = (object) dPi;

最佳實踐

[編輯 | 編輯原始碼]

對於引用型別,除非已知物件永遠不會引發異常,否則不建議使用直接轉換。一種常見的最佳實踐是使用 as 關鍵字。

///<summary>
/// Function attempts to cast object to cat.  
/// If object cannot be cast to cat, returns null 
///</summary>
public Cat ConvertToCat(object obj)
{
   Cat c = obj as Cat;
   return c;
}

!重要:僅當您在轉換後進行空值檢查並處理異常情況時,使用“as”關鍵字才是最佳實踐。在其他情況下,最好使用顯式轉換,然後除錯 NullReferenceException

參考文獻

[編輯 | 編輯原始碼]
華夏公益教科書