Aufgrund eines Fehlers, der in C # 4 behoben wurde, wird das folgende Programm gedruckt true
. (Probieren Sie es in LINQPad)
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()) { }
}
In VS2008 im Release-Modus wird eine InvalidProgramException ausgelöst. (Im Debug-Modus funktioniert es gut)
In VS2010 Beta 2 wird es nicht kompiliert (ich habe Beta 1 nicht ausprobiert). Das habe ich auf die harte Tour gelernt
Gibt es eine andere Möglichkeit, this == null
reines C # zu erstellen?