Bu soru 30 Mayıs 2013'teki blogumun konusuydu . Bu mükemmel soru için teşekkürler!
Boş bir araba yoluna bakıyorsunuz.
Birisi size "Araba yolunuz Honda Civic tutabilir mi?"
Evet. Evet yapabilir.
Birisi sizi ikinci bir yola yönlendiriyor. Ayrıca boş. "Araba yolumun mevcut içeriği araba yolunuza sığabilir mi?"
Evet, tabii ki. Her iki yol da boş! Birinin içeriği diğerine sığabilir, çünkü her ikisinin de içeriği yoktur.
Birisi size "Araba yolunuz Honda Civic içeriyor mu?"
Hayır.
isOperatörün ikinci soruyu cevapladığını düşünüyorsunuz : bu değer göz önüne alındığında, bu tür bir değişkene uyuyor mu? Bir boş başvuru bu tür bir değişkene uyuyor mu? Evet öyle.
isOperatörün cevapladığı soru bu değil . Bu soruyu isoperatörü cevaplar üçüncü sorudur. y is Xsormuyor " olan ytürde bir değişkenin yasal değeri X? " Bu "sorar mı ytüründe bir nesne için geçerli bir referans X? " null başvuru için geçerli bir referans olmadığı için herhangi bir nesne herhangi türü, cevap hayır" dır ". Bu araba yolu boş; Honda Civic içermiyor.
Buna bakmanın bir başka yolu da şu y is Xsoruya cevap vermesidir "dedim y as X, boş olmayan bir sonuç elde eder miydim?
Sorunuza biraz daha derin bakmak için:
Biri, null değerinin herhangi bir başvuru (veya null edilebilir) türüne ait olmasını bekler
Bir türün bir değer kümesi olduğu ve y değerinin X tipindeki bir değişkenle atama uyumluluğunun y'nin x kümesinin bir üyesi olup olmadığını kontrol etmekten başka bir şey olmadığı varsayılır .
Bu, türlere bakmak için son derece yaygın bir yol olsa da, türlere bakmanın tek yolu bu değildir ve C #, türlere bakmanın yolu değildir. Boş başvurular C # türünde olmayan türlerdir; atama uyumluluk edilir değil sadece bir değer içermesi olmadığını görmek için bir dizi kontrol ediyor. Bir null referansın, X referans tipi bir değişkenle uyumlu atama olması, null'un X tipinin bir üyesi olduğu anlamına gelmez. "" Atama ile uyumlu atamadır ve "tipin bir üyesidir" ilişkisinin çok fazla örtüşüyor, ancak CLR'de aynı değiller.
Eğer tip teorisi hakkındaki düşünceler ilginizi çekiyorsa, konuyla ilgili son makalelerime göz atın:
"Tip" olarak adlandırdığınız bu şey nedir? Bölüm Bir
"Tip" olarak adlandırdığınız bu şey nedir? Bölüm iki