78

What is the difference between Assert.AreEqual and Assert.AreSame?

Pramuka
  • 1,036
  • 1
  • 8
  • 15
  • 1
    Possible duplicate of [What's the difference between Assert.AreNotEqual and Assert.AreNotSame?](http://stackoverflow.com/questions/543263/whats-the-difference-between-assert-arenotequal-and-assert-arenotsame) – Scott Jul 14 '16 at 01:27

2 Answers2

91

It means that AreSame() checks that they are the exact same object - if reference indicate the same object in memory.

AreEqual() checks that objects has equal type and value. Equal objects can exist in two different places in memory.

magos
  • 3,127
  • 4
  • 25
  • 50
73

Assert.AreEqual(a, b) is the same as Assert.IsTrue(Object.Equals(a, b))

Assert.AreSame(a, b) is the same as Assert.IsTrue(Object.ReferenceEquals(a, b))

(the only reason I knew is I just figured it out myself a few hours ago today because I needed to do a Assert.IsTrue(Object.ReferenceEquals(a,b)) and thought "I wonder if there is a better way to do this")

DdW
  • 880
  • 1
  • 19
  • 30
Scott Chamberlain
  • 121,188
  • 31
  • 271
  • 414