No tiene sentido en el ejemplo dado.
Aunque no es aplicable en este caso, a veces hay una necesidad de echar nula (o al menos no había antes del incumplimiento (T) se añadió en cuenta lo siguiente:.
void DoSomething(string x) {
...
}
void DoSomething(object x) {
...
}
DoSomething(null); // compiler can't infer the type
DoSomething((string)null); // string type is now explicit
DoSomething(default(string)); // same as previous
EDITAR
Acabo de pensar en otro caso en el que tendrías que hacer el yeso al probar la igualdad. Si tuvieras un objeto que tuviera un operador == sobrecargado que permitiera la comparación con dos tipos de referencia, la comparación con el nulo sería ambigua. Sin embargo, porque IQueryableContext es más Probablemente una interfaz e interfaces no pueden overlo y el operador ==, todavía no veo ninguna razón válida para hacerlo en el ejemplo que proporcionó.
class CustomObject {
private string _id;
public CustomObject(string id) {
_id=id;
}
public static bool operator ==(CustomObject lhs, CustomObject rhs) {
if (ReferenceEquals(lhs, rhs)) { return true; }
if (ReferenceEquals(lhs, null)) { return false; }
if (ReferenceEquals(rhs, null)) { return false; }
return lhs._id == rhs._id;
}
public static bool operator !=(CustomObject lhs, CustomObject rhs) {
return !(lhs == rhs);
}
public static bool operator ==(CustomObject lhs, string rhs) {
if (ReferenceEquals(lhs, rhs)) { return true; }
if (ReferenceEquals(lhs, null)) { return false; }
if (ReferenceEquals(rhs, null)) { return false; }
return lhs._id == rhs;
}
public static bool operator !=(CustomObject lhs, string rhs) {
return !(lhs==rhs);
}
}
CustomObject o = null;
if (o == null) {
Console.WriteLine("I don't compile.");
}
No creo que haya una razón en absoluto, ya que 'null' es' nulo' - no tiene ningún tipo. Pueden ser conformes con algunos * solo debes verificar objetos del mismo tipo para el argumento de igualdad *, pero me parece un poco ridículo ... –
No sé, quizás ellos piensen que es por legibilidad/auto documentación? – Alan
¿Dónde está esta clase en el modelo de dominio? – R0MANARMY