Object.Equals Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет, равны ли два экземпляра объекта.
Перегрузки
| Имя | Описание |
|---|---|
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. |
| Equals(Object, Object) |
Определяет, считаются ли указанные экземпляры объектов равными. |
Equals(Object)
- Исходный код:
- Object.cs
- Исходный код:
- Object.cs
- Исходный код:
- Object.cs
- Исходный код:
- Object.cs
- Исходный код:
- 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 -> bool
Public Overridable Function Equals (obj As Object) As Boolean
Параметры
- obj
- Object
Объект для сравнения с текущим объектом.
Возвращаемое значение
true Значение , если указанный объект равен текущему объекту; falseв противном случае .
Комментарии
Дополнительные сведения об этом API см. в дополнительных примечаниях API для Object.Equals.
См. также раздел
Применяется к
Equals(Object, Object)
- Исходный код:
- Object.cs
- Исходный код:
- Object.cs
- Исходный код:
- Object.cs
- Исходный код:
- Object.cs
- Исходный код:
- 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 -> bool
Public 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 для равенства. Он сравнивает objA и objB для равенства следующим образом:
Он определяет, представляют ли два объекта одну и ту же ссылку на объект. Если они выполняются, метод возвращается
true. Этот тест эквивалентен вызову ReferenceEquals метода. Кроме того, если обаobjAзначения иobjBимеют значение NULL, метод возвращаетсяtrue.Он определяет, имеет ли значение
objAobjBnull. Если да, возвращаетсяfalse.Если два объекта не представляют одну и ту же ссылку на объект и не имеет значения NULL, вызывается
objA.Equals(objB) и возвращает результат. Это означает, что приobjAпереопределении метода вызывается переопределение Object.Equals(Object) .