Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| 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 10 | 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 ==.