CA1805: Jangan inisialisasi yang tidak perlu
Properti | Nilai |
---|---|
ID Aturan | CA1805 |
Judul | Jangan menginisialisasi secara tidak perlu |
Golongan | Performa |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | No |
Penyebab
Bidang kelas secara eksplisit diinisialisasi ke nilai default jenis bidang tersebut.
Deskripsi aturan
Runtime .NET menginisialisasi semua bidang jenis referensi ke nilai defaultnya sebelum menjalankan konstruktor. Dalam kebanyakan kasus, secara eksplisit menginisialisasi bidang ke nilai defaultnya dalam konstruktor berlebihan, menambahkan biaya pemeliharaan dan berpotensi menurunkan performa (seperti dengan peningkatan ukuran perakitan), dan inisialisasi eksplisit dapat dihapus.
Cara memperbaiki pelanggaran
Dalam kebanyakan kasus, perbaikan yang tepat adalah menghapus inisialisasi yang tidak perlu.
class C
{
// Violation
int _value1 = 0;
// Fixed
int _value1;
}
Dalam beberapa kasus, menghapus inisialisasi dapat mengakibatkan peringatan CS0649 berikutnya dikeluarkan karena bidang mempertahankan nilai defaultnya selamanya. Dalam kasus seperti itu, perbaikan yang lebih baik mungkin adalah menghapus bidang sepenuhnya atau menggantinya dengan properti:
class C
{
// Violation
private static readonly int s_value = 0;
// Fixed
private static int Value => 0;
}
Kapan harus menekan peringatan
Selalu aman untuk menekan peringatan, karena peringatan hanya menyoroti kode dan pekerjaan yang berpotensi tidak perlu yang mungkin dihindari.
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 CA1805
// The code that's violating the rule is on this line.
#pragma warning restore CA1805
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1805.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.