Whismeril
Messages postés18419Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 juin 2023
-
14 déc. 2011 à 19:28
Whismeril
Messages postés18419Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 juin 2023
-
16 déc. 2011 à 23:22
Bonsoir.
J'ai une classe toute bête avec quelques propriétés.
J'ai eu besoin d'écrire les opérateurs == et != (comme je ne sais pas quoi faire de Equals() et GetHasCode() j'ai mis return base....).
A un moment dans mon application je teste si une référence est instanciée comme ça:
if(maRef != null) ....
et là c'est le drame, dans ma méthode "==" le premier test
if (moi.Propriete1 == autre.Propriete1)
me retourne une erreur NullExeption, logique "autre" est null, et bien souvent, à ce stade, "moi" aussi.
J'ai contourné le problème comme ça, mais ça ne me plait pas:
bool moiNull = False;
bool autreNull = False;
try//test si moi est null
{
string toto = moi.Propriete1;
}
catch(NullExeption e)
{
moiNull = True;
}
try// test si autre est null
{
string toto = autre.Propriete1;
}
catch(NullExeption e)
{
autreNull = True;
}
if (moiNull && autreNull) {...}
else if (moiNull II autreNull) {...}//j'ai pas trouvé la barre du ou sur mon mac...
Whismeril
Messages postés18419Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 juin 2023624 16 déc. 2011 à 23:22
C'est impeccable, je n'avais pas du tout penser au cast en object.
Je ne connaissais pas System.Object.ReferenceEquals(), dans mon cas il retournera forcément false car je compare deux désérialisations xml de deux fichiers différents. Mais je le garde dans un coin pour le jour ou.