tengo una clase llamada Message
que sobrecarga estos operadores:== operador de nula
public static bool operator ==(Message left, Message right)
public static bool operator !=(Message left, Message right)
public static bool operator ==(Message left, string right)
public static bool operator !=(Message left, string right)
public static bool operator ==(string left, Message right)
public static bool operator !=(string left, Message right)
Quiero que el ==
y !=
operadores a mantener comparando las referencias de los tipos distintos de String
y Message
pero,
var message = new Message();
var isNull = message == null;
me da esto:
La llamada es ambigua entre los métodos o propiedades siguientes: 'Message.operator == (Mensaje, Mensaje)' y 'Message.operator == (Mensaje, String)'
Sé que es debido a que tanto Message
y String
son tipos de referencia y ambos pueden ser null
, pero quiero poder utilizar ==
opreator para comprobar si el mensaje es nulo.
¿Puedo sobrecargar ==
para valores nulos? Traté de sobrecargarlo para object
y llamar al object.ReferenceEquals(object, object)
en la sobrecarga, pero eso no ayudó.
Si quieres hacerlo de esta manera (que no recomiendo), deberás convertir 'null' a uno de los tipos aplicables. 'message == (string) null;' o 'message == (Message) null;' debería funcionar. – verdesmarald
@verdesmarald: Sí, funciona, pero esperaba encontrar una forma de usarlo directamente. ¿Qué recomiendas por cierto? –
No, hasta donde yo sé, no puedes hacer eso si quieres tener 'operator ==' s. – verdesmarald