permet de dire que nous avons deux objets O1 & O2 définis comme système.Object, dans mon site O1 & O2 peut être n'importe lequel des types suivants: P>
Alors, comment puis-je vérifier que O1 & O2 sont égaux, sont donc le même objet ou les mêmes de même type et de même valeur. P>
Puis-je simplement faire merci, p>
aj p> o1 == o2 code> ou dois-je faire o1.equals (O2) code> ou autre chose? P>
5 Réponses :
Je vous suggérerais d'utiliser
o1 == o2
Je suppose que j'aurais dû rafraîchir les réponses avant de terminer ma réponse. :) +1
J'utiliserais Jon a fourni d'excellentes explications sur la raison pour laquelle ce serait la meilleure utilisation. P> objet.equals (O1, O2) Code> - Réf. MSDN P>
opérateur == comparer des objets par référence et la méthode est égal à em> comparer les objets par valeur. affichera: p>
Par exemple: False
True
'Equals' doit fonctionner pour les chaînes et les types de valeur que vous avez répertoriés.
'==' échouera pour des choses comme le code suivant car les références aux objets en boîte ne sont pas identiques: p> modifier:
J'ai remarqué l'exemple StringBuilder indiqué ci-dessus, mais depuis que vous utilisez des chaînes et que leur opérateur d'égalité est remplacé, ils fonctionnaient avec "==" ou ".equals", le code suivant p> chaîne S1 = "Oui"; p> string s2 = "oui"; p> console.write (S1 == S2); p> console.writeline (S1. S2)); p> sorties
Vrai
Vrai p> p>
public class Something {
public long Id { get; set; }
public string Name { get; set; }
public override bool Equals(object obj) {
if (obj == null)
return false;
if (((Something)obj) == null)
return false;
Something s = (Something)obj;
return this.Id == s.Id && string.Equals(this.Name, s.Name);
}
public bool Equals(Something s) {
if (s == null)
return false;
return this.Id == s.Id && string.Equals(this.Name, s.Name);
}
}