Debido a un error que se solucionó en C# 4, el siguiente programa imprime true
. (Inténtelo en LINQPad)(esto == nulo) en 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()) { }
}
En VS2008 en modo de lanzamiento, lanza una InvalidProgramException. (En el modo de depuración, funciona bien)
En VS2010 Beta 2, no compila (no probé Beta 1); Me enteré de la manera difícil
¿Hay alguna otra manera de hacer this == null
en C# puro?
Es muy probable que sea un error en el compilador C# 3.0. Funciona de la manera que debería en C# 4.0. –
Sí, eso no debería compilar en absoluto IMO. – leppie
¿qué ...?! ¿A quién se le ocurren esas ideas? Sin embargo, un error interesante, gracias por compartir –