CA1829: Gunakan properti Length/Count, bukan metode Enumerable.Count
Properti | Nilai |
---|---|
ID Aturan | CA1829 |
Judul | Gunakan properti Panjang/Hitung alih-alih metode Enumerable.Count |
Golongan | Performa |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | Sebagai saran |
Penyebab
Metode LINQ Count digunakan pada jenis yang mendukung properti Length
atau Count
yang lebih efisien dan setara.
Deskripsi aturan
Aturan ini menandai panggilan metode LINQ Count pada kumpulan jenis yang memiliki properti Length
atau Count
setara, tetapi lebih efisien untuk mengambil data yang sama. Properti Length
atau Count
tidak menghitung koleksi, oleh karena itu menjadi lebih efisien.
Aturan ini menandai panggilan Count pada jenis koleksi berikut dengan properti Length
:
Aturan ini menandai panggilan Count pada jenis koleksi berikut dengan properti Count
:
- System.Collections.ICollection
- System.Collections.Generic.ICollection<T>
- System.Collections.Generic.IReadOnlyCollection<T>
Jenis koleksi yang dianalisis dapat diperluas di masa mendatang untuk mencakup lebih banyak kasus.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran, ganti panggilan metode Count dengan penggunaan akses properti Length
atau Count
. Misalnya, dua cuplikan kode berikut menunjukkan pelanggaran aturan dan cara memperbaikinya:
using System.Collections.Generic;
using System.Linq;
class C
{
public int GetCount(int[] array)
=> array.Count();
public int GetCount(ICollection<int> collection)
=> collection.Count();
}
using System.Collections.Generic;
class C
{
public int GetCount(int[] array)
=> array.Length;
public int GetCount(ICollection<int> collection)
=> collection.Count;
}
Tip
Perbaikan kode tersedia untuk aturan ini di Visual Studio. Untuk menggunakannya, posisikan kursor pada pelanggaran dan tekan Ctrl+. (titik). Pilih Gunakan properti Length/Count, bukan Count() jika tersedia dari daftar opsi yang ditampilkan.
Kapan harus menekan peringatan
Anda dapat menyembunyikan pelanggaran aturan ini jika tidak khawatir tentang dampak performa dari enumerasi koleksi yang tidak perlu untuk menghitung jumlahnya.
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 CA1829
// The code that's violating the rule is on this line.
#pragma warning restore CA1829
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1829.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
Aturan terkait
- CA1826: Gunakan properti, bukan metode Linq Enumerable
- CA1827: Jangan gunakan Count/LongCount jika Any dapat digunakan
- CA1828: Jangan gunakan CountAsync/LongCountAsync saat AnyAsync dapat digunakan