Genellikle kodumda boş yayma operatörü kullanırım çünkü bana daha okunabilir kod verir, özellikle uzun sorgularda kullanılan her bir sınıfı null-kontrol etmem gerekmiyor.
Aşağıdaki kod, lambda'da null propagating operatörü kullanamayacağımız bir derleme hatası atar.
var cnt = humans.AsQueryable().Count(a => a.House?[0].Price == 5000);
Hata :
Hata CS8072 Bir ifade ağacı lambda boş yayılma operatörü içermeyebilir.
C # Gerçekten başka bir şey yapamıyorsanız, yukarıdaki kodu aşağıdaki koda kolayca çevirebilir!
var cnt = humans.AsQueryable().Count(a => a.House != null && a.House[0].Price == 5000);
C # 'ın neden hiçbir şey yapmadığını ve sadece bir derleyici hatası attığını merak ediyorum?
Foo?.Bar
eşdeğer değildirFoo != null ? Foo.Bar : null
çünküFoo
çeviri her durumda doğru olmaz böylece, koşullu iki kez boş yayılan operatör ile bir kez değerlendirilir ve böyle.