[英]Are nullable types reference types?
當我將int
聲明為可空時
int? i=null;
i
在這里成為參考類型嗎?
不,可空是一個結構。 發生的事情是可空結構有兩個值:
int
為int?
, DateTime
為DateTime?
等)。 HasValue
是酒店。) 設置數據類型的值時,struct將HasValue
更改為true。
可空類型是System.Nullable結構的實例。
和
可空類型表示可以賦值為null的值類型變量。 您無法基於引用類型創建可空類型。 (引用類型已經支持null值。)
所以,不,他們不是參考類型。
可空類型既不是值類型也不是引用類型。 它們更像是值類型,但具有一些引用類型的屬性。
當然,可以為null的類型可以設置為null
。 此外,可空類型不能滿足通用struct
約束。 此外,當您將HasValue
等於false
可空類型打包時,您將獲得null
指針而不是盒裝可空類型(取消裝箱時存在類似情況)。
這些屬性使可空類型成為非值類型,但它們肯定也不是引用類型。 它們是他們自己特殊的可空值類型。
不,Nullable類型實際上是一個結構。 運行時將智能地為您設置空值,給出引用類型的外觀,當它不是....
您不應該將引用類型設置為可空類型,因為您可以在其位置傳遞null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.