CA2013: Jangan gunakan ReferenceEquals dengan jenis nilai

Properti Nilai
ID Aturan CA2013
Judul Jangan gunakan ReferenceEquals dengan jenis nilai
Kategori Keandalan
Perbaikan bersifat merusak atau tidak merusak Tidak terputus
Diaktifkan secara default di .NET 10 Sebagai peringatan
Bahasa yang berlaku C# dan Visual Basic

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 mengabaikan peringatan dari aturan ini. Sebaiknya gunakan operator kesetaraan yang lebih sesuai, seperti ==.

Lihat juga