閱讀英文版本

分享方式:


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 的詳細資訊,請參閱 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)

來源:
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。 如果 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 的物件是否相等。 它會比較 objAobjB 是否相等,如下所示:

  • 它會判斷這兩個物件是否代表相同的對象參考。 如果這樣做,方法會傳 true回 。 此測試相當於呼叫 ReferenceEquals 方法。 此外,如果 和 objB 都是 objAnull,則方法會傳true回 。

  • 它會判斷 或 objB 是否objANull。 如果是,則會傳 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