Bagikan melalui


CA2244: Jangan duplikasi inisialisasi elemen yang diindeks

Properti Nilai
ID Aturan CA2244
Judul Jangan duplikat inisialisasi elemen terindeks
Golongan Penggunaan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai saran

Penyebab

Penginisialisasi objek memiliki lebih dari satu penginisialisasi elemen terindeks dengan indeks konstanta yang sama. Semua kecuali penginisialisasi terakhir yang berlebihan.

Deskripsi aturan

Penginisialisasi objek memungkinkan Anda menetapkan nilai ke bidang atau properti objek yang dapat diakses pada waktu pembuatan tanpa harus memanggil konstruktor diikuti oleh baris pernyataan penugasan.

Penginisialisasi elemen terindeks dalam penginisialisasi objek harus menginisialisasi elemen unik. Indeks duplikat akan menimpa inisialisasi elemen sebelumnya.

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran, hapus semua inisialisasi elemen terindeks redundan yang ditimpa oleh salah satu inisialisasi elemen berikutnya. Misalnya, cuplikan kode berikut menunjukkan pelanggaran aturan dan beberapa potensi perbaikan:

using System.Collections.Generic;

class C
{
    public void M()
    {
        var dictionary = new Dictionary<int, int>
        {
            [1] = 1, // CA2244
            [2] = 2,
            [1] = 3
        };
    }
}
using System.Collections.Generic;

class C
{
    public void M()
    {
        var dictionary = new Dictionary<int, int>
        {
            [2] = 2,
            [1] = 3
        };
    }
}
using System.Collections.Generic;

class C
{
    public void M()
    {
        var dictionary = new Dictionary<int, int>
        {
            [1] = 1,
            [2] = 2
        };
    }
}

Tip

Perbaikan kode tersedia untuk aturan ini di Visual Studio. Untuk menggunakannya, posisikan kursor pada pelanggaran dan tekan Ctrl+. (titik). Pilih Hapus inisialisasi elemen redundan dari daftar opsi yang disajikan.

Code fix for CA2244 - Remove redundant element initializer

Kapan harus menekan peringatan

Jangan menekan pelanggaran untuk aturan ini.

Baca juga