Из-за ошибки, зафиксированной в С# 4, следующая программа печатает true
. (Попробуйте в 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()) { }
}
В VS2008 в режиме Release он генерирует исключение InvalidProgramException. (В режиме отладки он работает нормально)
В VS2010 Beta 2 он не компилируется (я не пробовал Beta 1); Я узнал, что трудный путь
Есть ли другой способ сделать this == null
в чистом С#?