quando provo a sovraccaricare l'operatore == e! = In C#, e sovrascrivo Equal come raccomandato, ho trovato Non ho modo di distinguere un oggetto normale e null. Ad esempio, ho definito un Complesso di classe.overload == (e! =, Ovviamente) operatore, posso bypassare == per determinare se l'oggetto è nullo
public static bool operator ==(Complex lhs, Complex rhs)
{
return lhs.Equals(rhs);
}
public static bool operator !=(Complex lhs, Complex rhs)
{
return !lhs.Equals(rhs);
}
public override bool Equals(object obj)
{
if (obj is Complex)
{
return (((Complex)obj).Real == this.Real &&
((Complex)obj).Imaginary == this.Imaginary);
}
else
{
return false;
}
}
Ma quando voglio usare
if (temp == null)
quando la temperatura è davvero nulla, qualche eccezione accade. E non posso usare == per determinare se lhs è nullo, il che causerà loop infinito.
Cosa devo fare in questa situazione.
Un modo in cui riesco a pensare è per noi qualcosa come Class.Equal (oggetto, oggetto) (se esiste) per ignorare == quando eseguo il controllo.
Qual è il modo normale di risolvere il problema?
Grazie.
possibile duplicato di [Come posso verificare la presenza di null in un sovraccarico dell'operatore '==' senza ricorsione infinita?] (Http://stackoverflow.com/questions/73713/how-do-i-check-for-nulls -in-un-operatore-sovraccarico-senza-infinito-ricorsione) – Sam