lorsque j'essaie de surcharger l'opérateur == et! = En C#, et remplacer Equal comme recommandé, j'ai trouvé Je n'ai aucun moyen de distinguer un objet normal et null. Par exemple, j'ai défini un complexe de classe.surcharge == (et! =, Bien sûr) opérateur, puis-je contourner == pour déterminer si l'objet est nul
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;
}
}
Mais quand je veux utiliser
if (temp == null)
quand la température est vraiment nulle, une exception se produit. Et je ne peux pas utiliser == pour déterminer si le lhs est nul, ce qui provoquera une boucle infinie.
Que dois-je faire dans cette situation?
Une façon dont je peux penser est à nous quelque chose comme Class.Equal (objet, objet) (si elle existe) pour contourner le == lorsque je fais la vérification.
Quelle est la manière normale de résoudre le problème?
Merci.
duplication possible de [Comment vérifier les valeurs null dans une surcharge '==' sans récursion infinie?] (Http://stackoverflow.com/questions/73713/how-do-i-check-for-nulls -in-an-operator-overload-without-infinite-récursion) – Sam