== null () C#!
C# 4, aşağıdaki programda sabit bir hata yüzünden baskı true
. (LİNQPad deneyin)
void Main() { new Derived(); }
class Base {
public Base(Func<string> valueMaker) { Console.WriteLine(valueMaker()); }
}
class Derived : Base {
string CheckNull() { return "Am I null? " (this == null); }
public Derived() : base(() => CheckNull()) { }
}
Serbest modunda VS2008, bir InvalidProgramException atar. (Hata Ayıklama modunda gayet iyi çalışıyor)
VS2010 Beta 2 derleme değil (Beta 1 çalışmadım); bunu zor yoldan öğrendim
Saf C this == null
yapmak için başka bir yolu var# mı?
CEVAP
Bu gözlem another question StackOverflow bugün daha önce ilan edilmiş.
Marcgreat answer to that question gösteren göre spec (bölüm 7.5.7), olmamalısın mümkün erişim this
içerik ve yetenek bunu yapmak için C# 3.0 derleyicisi olan bir hata. C# 4.0 derleyici doğru spec göre davranıyor (Beta 1, Bu derleme zamanında bir hata bile):
§ 7.5.7 Bu erişim
Birbu erişimoluşur ayrılmış anahtar kelime
this
.bu erişim:
this
Birbu erişimtek izinblokörnek oluşturucu, bir örnek yöntemi veya bir örnek erişimci.
Neden operatör null verildiğinde yanlı...
Nasıl bir seçici null döndürürse algıl...
Microsoft kullanırken Mümkün Null Atam...
Nasıl düzgün bir null işaretçi tüm bit...
Derin null kontrolü, daha iyi bir yolu...