Object.Equals 方法 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
确定两个对象实例是否相等。
重载
| Equals(Object) | 确定指定对象是否等于当前对象。 | 
| Equals(Object, Object) | 确定指定的对象实例是否被视为相等。 | 
Equals(Object)
- Source:
- Object.cs
- Source:
- Object.cs
- Source:
- Object.cs
确定指定对象是否等于当前对象。
public:
 virtual bool Equals(System::Object ^ obj);public virtual bool Equals (object obj);public virtual bool Equals (object? obj);abstract member Equals : obj -> bool
override this.Equals : obj -> boolPublic Overridable Function Equals (obj As Object) As Boolean参数
- obj
- Object
要与当前对象进行比较的对象。
返回
如果指定的对象是等于当前对象,则为 true;否则为 false。
注解
有关此 API 的详细信息,请参阅 Object.Equals 的补充 API 说明。
另请参阅
适用于
Equals(Object, Object)
- Source:
- Object.cs
- Source:
- Object.cs
- Source:
- Object.cs
确定指定的对象实例是否被视为相等。
public:
 static bool Equals(System::Object ^ objA, System::Object ^ objB);public static bool Equals (object objA, object objB);public static bool Equals (object? objA, object? objB);static member Equals : obj * obj -> boolPublic Shared Function Equals (objA As Object, objB As Object) As Boolean参数
- objA
- Object
要比较的第一个对象。
- objB
- Object
要比较的第二个对象。
返回
如果对象被视为相等,则为 true,否则为 false。 如果 objA 和 objB 均为 null,此方法返回 true。
示例
以下示例演示 了 方法, Equals(Object, Object) 并将其与 ReferenceEquals 方法进行比较。
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
open System
// Class constructor
type Dog(dogBreed) =
    // Public property.
    member _.Breed = dogBreed
    override this.Equals(obj) =
        match obj with
        | :? Dog as dog when dog.Breed = this.Breed -> true
        | _ -> false
    override _.GetHashCode() =
        dogBreed.GetHashCode()
    override _.ToString() =
        dogBreed
let m1 = Dog "Alaskan Malamute"
let m2 = Dog "Alaskan Malamute"
let g1 = Dog "Great Pyrenees"
let g2 = g1
let d1 = Dog "Dalmation"
let n1 = Unchecked.defaultof<Dog>
let n2 = Unchecked.defaultof<Dog>
printfn $"null = null: {Object.Equals(n1, n2)}"
printfn $"null Reference Equals null: {Object.ReferenceEquals(n1, n2)}\n"
printfn $"{g1} = {g2}: {Object.Equals(g1, g2)}"
printfn $"{g1} Reference Equals {g2}: {Object.ReferenceEquals(g1, g2)}\n"
printfn $"{m1} = {m2}: {Object.Equals(m1, m2)}"
printfn $"{m1} Reference Equals {m2}: {Object.ReferenceEquals(m1, m2)}\n"
printfn $"{m1} = {d1}: {Object.Equals(m1, d1)}"
printfn $"{m1} Reference Equals {d1}: {Object.ReferenceEquals(m1, d1)}"
// 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
Module Example
   Public Sub Main()
      Dim m1 As New Dog("Alaskan Malamute")
      Dim m2 As New Dog("Alaskan Malamute")
      Dim g1 As New Dog("Great Pyrenees")
      Dim g2 As Dog = g1
      Dim d1 As New Dog("Dalmation")
      Dim n1 As Dog = Nothing
      Dim n2 As Dog = Nothing
      
      Console.WriteLine("null = null: {0}", Object.Equals(n1, n2))
      Console.WriteLine("null Reference Equals null: {0}", Object.ReferenceEquals(n1, n2))
      Console.WriteLine()
      
      Console.WriteLine("{0} = {1}: {2}", g1, g2, Object.Equals(g1, g2))
      Console.WriteLine("{0} Reference Equals {1}: {2}", g1, g2, Object.ReferenceEquals(g1, g2))
      Console.WriteLine()
      
      Console.WriteLine("{0} = {1}: {2}", m1, m2, Object.Equals(m1, m2))
      Console.WriteLine("{0} Reference Equals {1}: {2}", m1, m2, Object.ReferenceEquals(m1, m2))
      Console.WriteLine()
      
      Console.WriteLine("{0} = {1}: {2}", m1, d1, Object.Equals(m1, d1))  
      Console.WriteLine("{0} Reference Equals {1}: {2}", m1, d1, Object.ReferenceEquals(m1, d1))  
   End Sub
End Module
Public Class Dog
   ' Public field.
   Public Breed As String
   
   ' Class constructor.
   Public Sub New(dogBreed As String)
      Me.Breed = dogBreed
   End Sub
   Public Overrides Function Equals(obj As Object) As Boolean
      If obj Is Nothing OrElse Not typeof obj Is Dog Then
         Return False
      Else
         Return Me.Breed = CType(obj, Dog).Breed
      End If   
   End Function
   
   Public Overrides Function GetHashCode() As Integer
      Return Me.Breed.GetHashCode()
   End Function
   
   Public Overrides Function ToString() As String
      Return Me.Breed
   End Function
End Class
' 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) 方法指示两个 对象 objA 和 objB是否相等。 它还使你能够测试其值为 null 的相等性对象。 它将 和 objB 相等性进行比较objA,如下所示:
- 它确定这两个对象是否表示相同的对象引用。 如果这样做,方法将 - true返回 。 此测试等效于调用 ReferenceEquals 方法。 此外,如果 和- objB都- objA为 null,则 方法返回- true。
- 它确定 - objA或- objB是否为 null。 如果是,则返回- false。
- 如果这两个对象不表示同一个对象引用,并且两者都不为 null,则调用 - objA(- Equals- objB) 并返回结果。 这意味着,如果- objA重写 Object.Equals(Object) 方法,则调用此替代。