เนื่องจากข้อบกพร่องที่ได้รับการแก้ไขใน 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 ในโหมด Release มันจะพ่น InvalidProgramException (ในโหมด Debug จะทำงานได้ดี)
ใน VS2010 Beta 2 มันไม่ได้คอมไพล์ (ฉันไม่ได้ลอง Beta 1); ฉันเรียนรู้ว่าวิธีที่ยาก
มีวิธีอื่นในการสร้างthis == null
C # ที่บริสุทธิ์หรือไม่?