C# 4에서 수정 된 버그로 인해 다음 프로그램은 true
을 인쇄합니다. 그것이 InvalidProgramException를 throw, 릴리스 모드에서 VS2008에서(this == null) C#!
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()) { }
}
을 (LINQPad에보십시오). (디버그 모드에서 제대로 작동합니다.)
VS2010 Beta 2에서는 컴파일되지 않습니다 (베타 1을 시도하지 않았습니다). 어려운 방법을 배웠습니다
this == null
을 순수한 C#으로 만들 수있는 다른 방법이 있습니까?
C# 3.0 컴파일러의 버그 일 가능성이 큽니다. C# 4.0에서 작동해야하는 방식으로 작동합니다. –
예, 모든 IMO에서 컴파일하지 않아야합니다. – leppie
무엇 ...?! 누가 그런 아이디어를 내놓습니까? 그럼에도 불구하고 재미있는 버그, 공유 덕분에 –