Bagikan melalui


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 8 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:

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.

Code fix for CA1829 - Use Length/Count property instead of Count() when available

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.

Baca juga