Ben bir int
null değeri olarak
int? i=null;
i
Burada bir referans türü haline geliyor mu ?
Ben bir int
null değeri olarak
int? i=null;
i
Burada bir referans türü haline geliyor mu ?
Yanıtlar:
Hayır, sıfırlanabilir bir yapıdır. Null olan yapının iki değeri vardır:
int
için int?
, DateTime
için DateTime?
, vb.).HasValue
mülktür.)Veri türünün değerini ayarladığınızda, yapı HasValue
true olarak değişir .
Gönderen null türleri (C # programlama Kılavuzu) :
Null olabilecek türler, System örneğidir. Null edilebilir yapı.
ve
Null olabilecek türler, null değeri atanabilecek değer türü değişkenleri temsil eder. Bir başvuru türüne dayalı olarak null olabilecek bir tür oluşturamazsınız. (Referans türleri zaten boş değeri desteklemektedir.)
Yani, hayır referans türleri değil.
Sıfırlanabilir türler ne değer türleri ne de referans türleridir. Daha çok değer türlerine benzerler, ancak referans türlerinin birkaç özelliğine sahiptirler.
Doğal olarak, boş değerli türler olarak ayarlanabilir null
. Ayrıca, boş değerli bir tür genel bir struct
kısıtlamayı karşılayamaz . Ayrıca, nullable tipine HasValue
eşit bir kutu koyduğunuzda false
,null
kutulu bir nulllable tip yerine işaretçi benzer bir durum vardır).
Bu özellikler nullable tiplerini değer olmayan türler haline getirir, ancak bunlar da referans türleri değildir. Kendi özel sıfırlanabilir değer tipleridir.
Hayır, Nullable türü aslında bir yapıdır. Çalışma zamanı, sizin için boş bir değer ayarını akıllıca işleyecek ve olmadığında bir referans türünün görünümünü verecektir.
Null olabilecek türler referans türleri olamaz.