web-dev-qa-db-fra.com

Différence entre Assert.AreEqual et Assert.AreSame?

Quelle est la différence entre Assert.AreEqual et Assert.AreSame?

62
Pramuka

Cela signifie que AreSame () vérifie qu'ils sont exactement le même objet - si la référence indique le même objet en mémoire.

AreEqual () vérifie que les objets ont un type et une valeur égaux. Des objets égaux peuvent exister à deux endroits différents de la mémoire.

76
magos

Assert.AreEqual(a, b) est identique à Assert.IsTrue(Object.Equals(a, b))

Assert.AreSame(a, b) est identique à Assert.IsTrue(Object.ReferenceEquals(a, b))

(la seule raison pour laquelle je le savais est que je l'ai moi-même découvert il y a quelques heures aujourd'hui parce que j'avais besoin de faire une Assert.IsTrue(Object.ReferenceEquals(a,b)) et j'ai pensé "Je me demande s'il y a une meilleure façon de le faire") )

54
Scott Chamberlain