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