Проверка на то, что объект в представляемый разными переменными не одно и то же что проверка на одинаковость. Объекты могут иметь одинаковое содержание но быть разными. То есть помещенными в разном месте в памяти это проверяется функцией Equals. В то же время две переменные могут указывать на один и тот же объект именно это и проверяться с помощью функции ReferenceEquals:
public static bool ReferenceEquals(object objA, object objB);
Смотрим пример.
using System; class MainClass { public static void Main(string[] args) { object s1= new object(); object s2= new object(); object s3=s1; Console.WriteLine(Object.ReferenceEquals(s1,s2)); Console.WriteLine(Object.ReferenceEquals(s1,s3)); } }
У нас объекты s1 и s2 разные, а вот s3 и s1 один и тот же объект так как указывают на одну область памяти. Именно это функция и проверяет.