2014-06-11 8 views
48

Was ist der Unterschied zwischen Assert.AreEqual und Assert.AreSame?Diff zwischen Assert.AreEqual und Assert.AreSame?

+0

Mögliches Duplikat von [Was ist der Unterschied zwischen Assert.AreNotEqual und Assert.AreNotSame?] (Http://stackoverflow.com/questions/543263/whats-the-difference-between-assert-arnotequal-and-assert-arenotsame) – Scott

Antwort

58

Es bedeutet, dass AreSame() überprüft, dass sie das exakt gleiche Objekt sind - wenn Referenz das gleiche Objekt im Speicher angeben.

AreEqual() überprüft, ob Objekte den gleichen Typ und Wert haben. Gleichwertige Objekte können an zwei verschiedenen Stellen im Speicher vorhanden sein.

42

Assert.AreEqual(a, b) das gleiche ist wie Assert.IsTrue(Object.Equals(a, b))

Assert.AreSame(a, b) die gleiche wie Assert.IsTrue(Object.ReferenceEquals(a, b)) ist

(der einzige Grund, warum ich mich heute vor wenigen Stunden wusste, das ich dachte, es nur, weil ich ein Assert.IsTrue(Object.ReferenceEquals(a,b)) tun musste und Gedanke "Ich frage mich, ob es eine bessere Möglichkeit gibt, dies zu tun")