Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Properti | Nilai |
---|---|
ID Aturan | CA2224 |
Judul | Mengesampingkan Sama dengan operator kelebihan beban sama dengan |
Golongan | Penggunaan |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | Sebagai saran |
Jenis publik menerapkan operator kesetaraan tetapi tidak mengganti System.Object.Equals.
Operator kesetaraan dimaksudkan untuk menjadi cara yang nyaman secara sintetis untuk mengakses fungsionalitas Equals metode. Jika Anda menerapkan operator kesetaraan, logikanya harus identik dengan Equals.
Catatan
Aturan ini hanya berlaku untuk kode Visual Basic. Pengkompilasi C# menghasilkan peringatan terpisah, CS0660.
Untuk memperbaiki pelanggaran aturan ini, Anda harus menghapus implementasi operator kesetaraan, atau mengambil Equals alih dan meminta kedua metode mengembalikan nilai yang sama. Jika operator kesetaraan tidak memperkenalkan perilaku yang tidak konsisten, Anda dapat memperbaiki pelanggaran dengan memberikan implementasi Equals yang memanggil Equals metode di kelas dasar.
Aman untuk menekan peringatan dari aturan ini jika operator kesetaraan mengembalikan nilai yang sama dengan implementasi yang diwariskan dari Equals. Contoh dalam artikel ini mencakup jenis yang dapat dengan aman menekan peringatan dari aturan ini.
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.
#pragma warning disable CA2224
// The code that's violating the rule is on this line.
#pragma warning restore CA2224
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA2224.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
Contoh berikut menunjukkan kelas (jenis referensi) yang melanggar aturan ini.
' This class violates the rule.
Public Class Point
Public Property X As Integer
Public Property Y As Integer
Public Sub New(x As Integer, y As Integer)
Me.X = x
Me.Y = y
End Sub
Public Overrides Function GetHashCode() As Integer
Return HashCode.Combine(X, Y)
End Function
Public Shared Operator =(pt1 As Point, pt2 As Point) As Boolean
If pt1 Is Nothing OrElse pt2 Is Nothing Then
Return False
End If
If pt1.GetType() <> pt2.GetType() Then
Return False
End If
Return pt1.X = pt2.X AndAlso pt1.Y = pt2.Y
End Operator
Public Shared Operator <>(pt1 As Point, pt2 As Point) As Boolean
Return Not pt1 = pt2
End Operator
End Class
Contoh berikut memperbaiki pelanggaran dengan mengesampingkan System.Object.Equals.
' This class satisfies the rule.
Public Class Point
Public Property X As Integer
Public Property Y As Integer
Public Sub New(x As Integer, y As Integer)
Me.X = x
Me.Y = y
End Sub
Public Overrides Function GetHashCode() As Integer
Return HashCode.Combine(X, Y)
End Function
Public Overrides Function Equals(obj As Object) As Boolean
If obj = Nothing Then
Return False
End If
If [GetType]() <> obj.GetType() Then
Return False
End If
Dim pt As Point = CType(obj, Point)
Return X = pt.X AndAlso Y = pt.Y
End Function
Public Shared Operator =(pt1 As Point, pt2 As Point) As Boolean
' Object.Equals calls Point.Equals(Object).
Return Object.Equals(pt1, pt2)
End Operator
Public Shared Operator <>(pt1 As Point, pt2 As Point) As Boolean
' Object.Equals calls Point.Equals(Object).
Return Not Object.Equals(pt1, pt2)
End Operator
End Class
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarang