Bagikan melalui


CA1043: Gunakan argumen integral atau string untuk pengindeks

Properti Nilai
ID Aturan CA1043
Judul Menggunakan argumen integral atau string untuk pengindeks
Golongan Desain
Perbaikan bersifat disruptif atau non-disruptif Merusak
Diaktifkan secara default di .NET 8 Tidak

Penyebab

Jenis berisi pengindeks yang menggunakan jenis indeks selain System.Int32, , System.Int64System.Object, atau System.String.

Secara default, aturan ini hanya melihat jenis yang terlihat secara eksternal, tetapi ini dapat dikonfigurasi.

Deskripsi aturan

Pengindeks, yaitu, properti terindeks, harus menggunakan tipe bilangan bulat atau string untuk indeks. Jenis ini biasanya digunakan untuk mengindeks struktur data dan meningkatkan kegunaan pustaka. Penggunaan Object jenis harus dibatasi untuk kasus-kasus di mana bilangan bulat atau jenis string tertentu tidak dapat ditentukan pada waktu desain. Jika desain memerlukan jenis lain untuk indeks, pertimbangkan kembali apakah jenis mewakili penyimpanan data logis. Jika tidak mewakili penyimpanan data logis, gunakan metode .

Cara memperbaiki pelanggaran

Untuk memperbaiki pelanggaran aturan ini, ubah indeks menjadi bilangan bulat atau jenis string atau gunakan metode alih-alih pengindeks.

Kapan harus menekan peringatan

Tekan peringatan dari aturan ini hanya setelah dengan hati-hati mempertimbangkan kebutuhan akan pengindeks nonstandar.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

#pragma warning disable CA1043
// The code that's violating the rule is on this line.
#pragma warning restore CA1043

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA1043.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Mengonfigurasi kode yang akan dianalisis

Gunakan opsi berikut untuk mengonfigurasi bagian mana dari codebase Anda yang akan menjalankan aturan ini.

Anda dapat mengonfigurasi opsi ini hanya untuk aturan ini, untuk semua aturan yang berlaku untuknya, atau untuk semua aturan dalam kategori ini (Desain) yang berlaku untuk aturan ini. Untuk informasi selengkapnya, lihat Opsi konfigurasi aturan kualitas kode.

Menyertakan permukaan API tertentu

Anda dapat mengonfigurasi bagian mana dari basis kode yang akan menjalankan aturan ini, berdasarkan aksesibilitasnya. Misalnya, untuk menentukan bahwa aturan hanya boleh dijalankan pada permukaan API non-publik, tambahkan pasangan kunci-nilai berikut ke file .editorconfig di proyek Anda:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Contoh

Contoh berikut menunjukkan pengindeks yang menggunakan Int32 indeks.

string[] Month = new string[] { "Jan", "Feb", "..." };

public string this[int index]
{
    get => Month[index];
}
Private month() As String = {"Jan", "Feb", "..."}

Default ReadOnly Property Item(index As Integer) As String
    Get
        Return month(index)
    End Get
End Property