Null olabilecek türler başvuru türleri mi?


Yanıtlar:


136

Hayır, sıfırlanabilir bir yapıdır. Null olan yapının iki değeri vardır:

  1. Veri türünün değeri ( intiçin int?, DateTimeiçin DateTime?, vb.).
  2. Veri türü değerinin ayarlanıp ayarlanmadığını bildiren bir boolean değeri. ( HasValuemülktür.)

Veri türünün değerini ayarladığınızda, yapı HasValuetrue olarak değişir .

Null olabilecek türler (C # Programlama Kılavuzu)


26

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.


14

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 structkısıtlamayı karşılayamaz . Ayrıca, nullable tipine HasValueeş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.


6

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.


2
Ben 'akıllıca işlemek' sorgulamak istiyorum, oldukça öznel. Şahsen davranışları kafa karıştırıcı ve sıkıcı buluyorum.
nicodemus13


0

Yerine null iletebildiğiniz için, bir başvuru türünü sıfırlanabilir tür yapmanıza gerek yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.