ho una classe chiamata Message
sovraccaricando questi operatori:Sovraccarico == operatore per nulla
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)
voglio operatori ==
e !=
mantengono confronto i riferimenti dei tipi diversi e String
Message
ma,
var message = new Message();
var isNull = message == null;
mi dà questo:
La chiamata è ambigua tra le seguenti metodi o proprietà: 'Message.operator == (Messaggio, Messaggio)' e 'Message.operator == (Messaggio, string)'
Lo so che è perché entrambi Message
e String
sono tipi di riferimento ed entrambi possono essere null
, ma voglio essere in grado di utilizzare ==
opreator per verificare se il messaggio è nullo.
Posso sovraccaricare ==
per valori nulli? Ho provato a sovraccaricarlo per object
e chiamare object.ReferenceEquals(object, object)
nel sovraccarico, ma questo non ha aiutato.
Se non vuoi farlo in questo modo (che non consiglio), dovrai lanciare 'null' su uno dei tipi applicabili. 'messaggio == (stringa) null;' o 'message == (Message) null;' dovrebbe funzionare. – verdesmarald
@verdesmarald: Sì, funziona ma speravo di trovare un modo per usarlo direttamente. Cosa raccomandi tra? –
No, per quanto ne so non puoi farlo se vuoi avere più operatori '==' s. – verdesmarald