實質型別有以下這些
實值型別的執行個體是儲存在Stack中。與參考型別比,因為該區塊就直接包含資料,會有較佳的執行效率。
在.NET中,所有實值型別都在16個位元組以下。
實值型別可分成以下三種:
1.內建實值型別,如 Int16 、 Boolean 、 Byte 、 Guid 、 DateTime
(Int16 、 Int32 、 Byte 、 Boolean 、 DateTime 是內建實值型別,short, int,bool,byte 是別名)
2.自訂型別,如 結構,結構是在這些分類之內:
(內建的數字類型 (Numeric Type) 都是結構 )
3.列舉型別,如 DayOfWeek 、 ConsoleColor
注意,
除了 object 和 string 以外的所有型別,都視為簡單型別。
型別關鍵字和它們的別名可互換。 例如:
int x = 123;
System.Int32 x = 123;
1.所有實值型別都是自 System.ValueType 隱含衍生而來。
2.無法從實值型別衍生新型別。
(實值類型是「密封」(Sealed) 的類,不能衍生自 System.Int32,結構不能繼承自任何使用者定義的類別或結構,
只能繼承自 System.ValueType。 但結構可以實作一個或多個介面。 結構類型可以轉型為介面類型,這會導致 Boxing 作業執行)
3.不同於參考型別,實值型別不允許 null 值。 不過,可為 Null 的型別 功能允許實值型別指派給 null。(要特別宣告成Nullable這個泛型類別)
4.每個實值型別都有隱含預設建構函式 (Constructor),所以宣告執行個體時,可以不需要使用New。
5.實值型別都必需明確初始化之後才可以使用。
6.若要判斷變數是否已經指派數值,可將變數宣告成 Nullable 泛型類別,再使用 HasValue 偵測。
參考來源:
http://vito-dotnet.blogspot.tw/2011/12/blog-post.html
http://www.dotblogs.com.tw/h091237557/archive/2014/05/26/145247.aspx
http://xingulin.tumblr.com/post/48493582986/ref-type-vs-val-type