Equals

Метод сравнивает текущий и заданный объекты. Равенство объектов проверяется путем побитового сравнения типов значений, на которые ссылаются объекты.

Равенство ссылок означает, что сравниваемые ссылки на объект указывают на один и тот же объект.

Побитовое равенство означает, что сравниваемые объекты обладают одинаковым двоичным представлением.

Равенство значений означает, что сравниваемые объекты обладают одинаковыми значениями, несмотря на то, что их двоичные представления отличаются. Например, есть два объекта Decimal, представляющие числа 1.10 и 1.1000. Объекты типа Decimal побитово неравны, поскольку они обладают различными битовыми представлениями, позволяющими учесть различное количество последних нулей в дробной части. Однако значения этих объектов равны, поскольку числа 1.10 и 1.1000 при сравнении считаются равными, поскольку последние нули в дробной части не значимы.

Метод Equals предназначен только для сравнения примитивов и объектов (но не для сложных структур, таких, как массивы объектов).

Следующие утверждения справедливы для всех вызовов метода Equals. В списке буквы x, y, и z обозначают ссылки на объекты, не равные null-ссылке:

  • x.Equals(x) возвращает значение true, кроме случая, когда х относится к типу с плавающей запятой;

  • x.Equals(y) возвращает то же значение, что и метод y.Equals(x);

  • x.Equals(y) возвращает значение true, если x и y относятся к типу NaN;

  • (x.Equals(y) && y.Equals(z)) возвращает значение true, в том и только в том случае, если метод x.Equals(z) возвращает значение true;

  • последующие вызовы метода x.Equals(y) возвращают то же значение до тех пор, пока объекты, ссылками на которые являются x и y, остаются неизменными;

  • x.Equals(null-ссылка) возвращает значение false.

Синтаксис
public virtual bool Equals(Object obj);

obj – объект который требуется сравнить с текущим объектом.

Возвращаемое значение

Результат сравнения:

  • true – сравниваемые объекты равны;

  • false – сравниваемые объекты не равны.

Исключения

Отсутствуют.

Пример
// C#
using System;

class EqualsSample
{
  static void Main()
  {
    Object obj1 = new Object();
    Object obj2 = new Object();
    Console.WriteLine(obj1.Equals(obj2)); //=== > false
    obj2 = obj1;
    Console.WriteLine(obj1.Equals(obj2)); //=== > true
  }
}