實值型別包含兩個主要分類:
結構是在這些分類之內:
-
數字型別 (Numeric Type)
-
bool
-
使用者定義結構。
直接依據實值型別的變數包含值。指派一個實值型別變數給其他實值型別變數,會複製所包含的值。這和參考型別變數的指派不同,參考型別變數的指派會複製物件的參考,但不會複製物件本身。
所有實值型別都是自 System.ValueType 隱含衍生而來。
不同於參考型別,您無法由實值型別衍生新型別。然而,就像參考型別,結構可以實作介面。
不同於參考型別,實值型別不能包含 null 值。不過,可為 Null 的型別功能允許將實值型別指派為 null。
每個實值型別都有隱含預設建構函式 (Constructor),來初始化此種型別的預設值。如需實值型別預設值的詳細資訊,請參閱預設值表。
所有的簡單型別 (是 C# 語言所不可缺少的) 都是 .NET Framework System 型別的別名。例如,int 是 System.Int32 的別名。如需別名的完整清單,請參閱內建型別資料表 (C# 參考)。
運算元皆為簡單型別常數的常數運算式會在編譯 (Compilation) 時期評估。
簡單型別可以使用常值 (Literal) 來初始化。例如,'A' 是 char 型別的常值,而 2001 是 int 型別的常值。
C# 裡的區域變數在使用之前必須初始化。因此,如果您沒有初始化就宣告區域變數,如下所示:
在初始化之前您不能使用它。您可以使用下列陳述式將其初始化:
myInt = new int(); // Invoke default constructor for int type.
等於:
myInt = 0; // Assign an initial value, 0 in this example.
當然,您可以在同一個陳述式裡宣告和初始化,如下所示:
-或-
使用 new 運算子呼叫特定型別的預設建構函式,並且將預設值指派給變數。在上述的範例裡,預設建構函式將值 0 指派給 myInt。如需藉由呼叫預設建構函式來指派值的詳細資訊,請參閱預設值表。
針對使用者定義型別,請使用 new 來叫用 (Invoke) 預設建構函式。例如,下列陳述式叫用 Point 結構的預設建構函式:
Point p = new Point(); // Invoke default constructor for the struct.
在這個呼叫之後,此結構將被視為已經明確的指派了,也就是,它的所有成員都已經初始化為它們的預設值。
如需 new 運算子的詳細資訊,請參閱 new。
如需格式化數字型別的輸出之詳細資訊,請參閱格式化數值結果表。
參考
C# 關鍵字
參考型別 (C# 參考)
概念
C# 程式設計手冊
其他資源
C# 參考
型別 (C# 參考)
型別參考表 (C# 參考)