CA2013: Jangan gunakan ReferenceEquals dengan jenis nilai
Properti | Nilai |
---|---|
ID Aturan | CA2013 |
Judul | Jangan gunakan ReferenceEquals dengan jenis nilai |
Golongan | Keandalan |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 8 | Sebagai peringatan |
Penyebab
Menggunakan System.Object.ReferenceEquals metode untuk menguji satu atau beberapa jenis nilai untuk kesetaraan.
Deskripsi aturan
Saat membandingkan nilai menggunakan ReferenceEquals, jika objA dan objB adalah jenis nilai, keduanya diberi kotak sebelum diteruskan ke metode ReferenceEquals. Ini berarti bahwa bahkan jika objA dan objB mewakili instans yang sama dari jenis nilai, ReferenceEquals metode tersebut tetap mengembalikan false, seperti yang ditunjukkan contoh berikut.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran, ganti dengan pemeriksaan kesetaraan yang lebih tepat seperti ==
.
int int1 = 1, int2 = 1;
// Violation occurs, returns false.
Console.WriteLine(Object.ReferenceEquals(int1, int2)); // false
// Use appropriate equality operator or method instead
Console.WriteLine(int1 == int2); // true
Console.WriteLine(object.Equals(int1, int2)); // true
Kapan harus menekan peringatan
Tidak aman untuk menekan peringatan dari aturan ini. Sebaiknya gunakan operator kesetaraan yang lebih sesuai, seperti ==
.
Aturan terkait
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk