9
votes

Égalité d'objet .NET

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:

  • String
  • int32
  • Double
  • boolean
  • DateTime
  • DBNULL

    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.

    Puis-je simplement faire o1 == o2 ou dois-je faire o1.equals (O2) ou autre chose?

    merci,

    aj


0 commentaires

5 Réponses :


20
votes

Je vous suggérerais d'utiliser

o1 == o2


1 commentaires

Je suppose que j'aurais dû rafraîchir les réponses avant de terminer ma réponse. :) +1



1
votes

J'utiliserais objet.equals (O1, O2) - Réf. MSDN

Jon a fourni d'excellentes explications sur la raison pour laquelle ce serait la meilleure utilisation.


0 commentaires

4
votes

opérateur == comparer des objets par référence et la méthode est égal à em> comparer les objets par valeur.
Par exemple: xxx pré>

affichera: p>

False

True


0 commentaires

1
votes

'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: xxx

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

chaîne S1 = "Oui";

string s2 = "oui";

console.write (S1 == S2);

console.writeline (S1. S2));

sorties Vrai Vrai


0 commentaires

0
votes
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);
    }
}

0 commentaires