Object.Equals 方法

定义

确定两个对象实例是否相等。

重载

Equals(Object)

确定指定对象是否等于当前对象。

Equals(Object, Object)

确定指定的对象实例是否被视为相等。

Equals(Object)

Source:
Object.cs
Source:
Object.cs
Source:
Object.cs

确定指定对象是否等于当前对象。

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

参数

obj
Object

要与当前对象进行比较的对象。

返回

如果指定的对象是等于当前对象,则为 true;否则为 false

注解

有关此 API 的详细信息,请参阅 Object.Equals 的补充 API 说明

另请参阅

适用于

.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)

Source:
Object.cs
Source:
Object.cs
Source:
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。 如果 objAobjB 均为 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) 方法指示两个 对象 objAobjB是否相等。 它还使你能够测试其值为 null 的相等性对象。 它将 和 objB 相等性进行比较objA,如下所示:

  • 它确定这两个对象是否表示相同的对象引用。 如果这样做,方法将 true返回 。 此测试等效于调用 ReferenceEquals 方法。 此外,如果 和 objBobjAnull,则 方法返回 true

  • 它确定 objAobjB 是否为 null。 如果是,则返回 false

  • 如果这两个对象不表示同一个对象引用,并且两者都不为 null,则调用 objA (EqualsobjB) 并返回结果。 这意味着,如果 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