Nel seguente frammento C#, sovrascrivo il metodo ==
. _type
è un numero di tipo short
. Quindi in realtà sto dicendo che due WorkUnitType
s sono gli stessi quando quei due short
s sono uguali.Verifica null in == override
public static bool operator ==(WorkUnitType type1, WorkUnitType type2)
{
if (type1 == null || type2 == null)
return false;
return type1._type == type2._type;
}
Perché R # mi avverte, ed è del tutto chiaro il motivo per cui, che type1
/type2
potrebbe potenzialmente essere nullo Sto cercando di recuperare quello con il if
dichiarazione di cui sopra.
Ora sto ottenendo uno StackOverflowException
che ha perfettamente senso perché in realtà sto chiamando l'override.
Domanda: Come si scrive questo metodo "corretto". Come posso rilevare che type1
o type2
possono essere null
?
La mia ipotesi migliore: Forse sono solo abusando ==
qui e il controllo per l'uguaglianza deve essere fatto con la Equals
override. Ma continuo a pensare che il problema esista. Allora, dov'è il mio errore nel ragionamento?
Non sapevo che 'ReferenceEquals' esiste. Questa è in realtà la risposta. Grazie. – Stephan