Прочитать на английском

Поделиться через


Object.Equals Метод

Определение

Определяет, равны ли два экземпляра объекта.

Перегрузки

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

Equals(Object, Object)

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

Equals(Object)

Исходный код:
Object.cs
Исходный код:
Object.cs
Исходный код:
Object.cs

Определяет, равен ли указанный объект текущему объекту.

C#
public virtual bool Equals (object obj);
C#
public virtual bool Equals (object? obj);

Параметры

obj
Object

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

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

Значение true, если указанный объект равен текущему объекту; в противном случае — значение false.

Комментарии

Дополнительные сведения об этом API см. в разделе Дополнительные примечания API для Object.Equals.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Equals(Object, Object)

Исходный код:
Object.cs
Исходный код:
Object.cs
Исходный код:
Object.cs

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

C#
public static bool Equals (object objA, object objB);
C#
public static bool Equals (object? objA, object? objB);

Параметры

objA
Object

Первый из сравниваемых объектов.

objB
Object

Второй из сравниваемых объектов.

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

true, если указанные объекты равны; в противном случае — false. Если оба параметра objA и objB имеют значение NULL, метод возвращает значение true.

Примеры

В следующем примере показан Equals(Object, Object) метод и сравнивается с методом ReferenceEquals .

C#
using System;

public class Example
{
   public static void Main()
   {
      Dog m1 = new Dog("Alaskan Malamute");
      Dog m2 = new Dog("Alaskan Malamute");
      Dog g1 = new Dog("Great Pyrenees");
      Dog g2 = g1;
      Dog d1 = new Dog("Dalmation");
      Dog n1 = null;
      Dog n2 = null;

      Console.WriteLine("null = null: {0}", Object.Equals(n1, n2));
      Console.WriteLine("null Reference Equals null: {0}\n", Object.ReferenceEquals(n1, n2));

      Console.WriteLine("{0} = {1}: {2}", g1, g2, Object.Equals(g1, g2));
      Console.WriteLine("{0} Reference Equals {1}: {2}\n", g1, g2, Object.ReferenceEquals(g1, g2));

      Console.WriteLine("{0} = {1}: {2}", m1, m2, Object.Equals(m1, m2));
      Console.WriteLine("{0} Reference Equals {1}: {2}\n", m1, m2, Object.ReferenceEquals(m1, m2));

      Console.WriteLine("{0} = {1}: {2}", m1, d1, Object.Equals(m1, d1));
      Console.WriteLine("{0} Reference Equals {1}: {2}", m1, d1, Object.ReferenceEquals(m1, d1));
   }
}

public class Dog
{
   // Public field.
   public string Breed;

   // Class constructor.
   public Dog(string dogBreed)
   {
      this.Breed = dogBreed;
   }

   public override bool Equals(Object obj)
   {
      if (obj == null || !(obj is Dog))
         return false;
      else
         return this.Breed == ((Dog) obj).Breed;
   }

   public override int GetHashCode()
   {
      return this.Breed.GetHashCode();
   }

   public override string ToString()
   {
      return this.Breed;
   }
}
// The example displays the following output:
//       null = null: True
//       null Reference Equals null: True
//
//       Great Pyrenees = Great Pyrenees: True
//       Great Pyrenees Reference Equals Great Pyrenees: True
//
//       Alaskan Malamute = Alaskan Malamute: True
//       Alaskan Malamute Reference Equals Alaskan Malamute: False
//
//       Alaskan Malamute = Dalmation: False
//       Alaskan Malamute Reference Equals Dalmation: False

Комментарии

Статический Equals(Object, Object) метод указывает, равны ли два объекта и objBobjA . Он также позволяет тестировать объекты со значением NULL на равенство. Он сравнивает objA и objB на равенство следующим образом:

  • Он определяет, представляют ли два объекта одну и ту же ссылку на объект. Если это так, метод возвращает true. Этот тест эквивалентен вызову ReferenceEquals метода . Кроме того, если оба objA значения и objB имеют значение NULL, метод возвращает true.

  • Он определяет, имеет ли objA значение или objBзначение NULL. Если это так, возвращается false.

  • Если два объекта не представляют одну и ту же ссылку на объект и ни один из этих объектов не имеет значения NULL, он вызывает .objAEquals(objB) и возвращает результат. Это означает, что при objA переопределении Object.Equals(Object) метода вызывается это переопределение.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0