IEqualityComparer.Equals(Object, Object) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan apakah objek yang ditentukan sama.
public:
bool Equals(System::Object ^ x, System::Object ^ y);
public bool Equals (object x, object y);
public bool Equals (object? x, object? y);
abstract member Equals : obj * obj -> bool
Public Function Equals (x As Object, y As Object) As Boolean
Parameter
- x
- Object
Objek pertama yang dibandingkan.
- y
- Object
Objek kedua untuk dibandingkan.
Mengembalikan
true
jika objek yang ditentukan sama; jika tidak, false
.
Pengecualian
x
dan y
dari jenis yang berbeda dan tidak satu pun dapat menangani perbandingan dengan yang lain.
Contoh
Contoh kode berikut menunjukkan implementasi case-insensitive IEqualityComparer. Dalam contoh ini, CaseInsensitiveComparer.Compare metode digunakan untuk menentukan apakah dua objek sama, berdasarkan yang disediakan CultureInfo.
ref class myCultureComparer : IEqualityComparer
{
private:
CaseInsensitiveComparer^ myComparer;
public:
myCultureComparer()
{
myComparer = CaseInsensitiveComparer::DefaultInvariant;
}
myCultureComparer(CultureInfo^ myCulture)
{
myComparer = gcnew CaseInsensitiveComparer(myCulture);
}
virtual bool Equals(Object^ x, Object^ y)
{
if (myComparer->Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
virtual int GetHashCode(Object^ obj)
{
return obj->ToString()->ToLower()->GetHashCode();
}
};
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
return myComparer.Compare(x, y) == 0;
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return myComparer.Compare(x, y) = 0
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
Keterangan
Terapkan metode ini untuk memberikan perbandingan kesetaraan yang disesuaikan untuk objek.
Catatan Bagi Implementer
Metode Equals(Object, Object) ini refleksif, simetris, dan transitif. Artinya, ia mengembalikan true
jika digunakan untuk membandingkan objek dengan dirinya sendiri; true
untuk dua objek x
dan y
jika true
untuk y
dan x
; dan true
untuk dua objek x
dan z
jika itu true
untuk x
dan y
dan juga true
untuk y
dan z
.
Implementasi diperlukan untuk memastikan bahwa jika Equals(Object, Object) metode mengembalikan true
untuk dua objek x
dan y
, maka nilai yang dikembalikan oleh GetHashCode(Object) metode untuk x
harus sama dengan nilai yang dikembalikan untuk y
.