由于在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()) { }
}
Run Code Online (Sandbox Code Playgroud)
在VS2008的发布模式下,它会抛出InvalidProgramException.(在调试模式下,它工作正常)
在VS2010 Beta 2中,它没有编译(我没有尝试Beta 1); 我学到了很难的方法
this == null在纯C#中还有其他方法吗?
在一个类方法中看到这一行,我的第一反应是嘲笑编写它的开发人员..但是,我认为我应该确保我是对的.
public void dataViewActivated(DataViewEvent e) {
if (this != null)
// Do some work
}
Run Code Online (Sandbox Code Playgroud)
那条线路会被评估为假吗?