Bagikan melalui


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 ==.

Baca juga