Bagikan melalui


CA1860: Hindari menggunakan metode ekstensi 'Enumerable.Any()'

Properti Nilai
ID Aturan CA1860
Judul Hindari menggunakan metode ekstensi 'Enumerable.Any()'
Golongan Performa
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai saran

Penyebab

Enumerable.Anydipanggil pada jenis yang memiliki properti , , atau IsEmpty.CountLength

Deskripsi aturan

Untuk menentukan apakah jenis koleksi memiliki elemen apa pun, lebih efisien dan lebih jelas untuk menggunakan Lengthproperti , , Countatau IsEmpty (jika memungkinkan) daripada memanggil Enumerable.Any metode .

Any(), yang merupakan metode ekstensi, menggunakan kueri terintegrasi bahasa (LINQ). Lebih efisien untuk mengandalkan properti koleksi sendiri, dan juga mengklarifikasi niat.

Catatan

Aturan ini mirip dengan CA1827: Jangan gunakan Count()/LongCount() ketika Any() dapat digunakan. Namun, aturan tersebut berlaku untuk metode LinqCount(), sementara aturan ini menyarankan penggunaan Countproperti .

Cara memperbaiki pelanggaran

Ganti panggilan ke Any() dengan panggilan ke Lengthproperti koleksi , , Countatau IsEmpty .

Contoh

Cuplikan kode berikut menunjukkan pelanggaran CA1860:

bool HasElements(string[] strings)
{
    return strings.Any();
}
Function HasElements(strings As String()) As Boolean
    Return strings.Any()
End Function

Cuplikan kode berikut memperbaiki pelanggaran:

bool HasElements(string[] strings)
{
    return strings.Length > 0;
}
Function HasElements(strings As String()) As Boolean
    Return strings.Length > 0
End Function

Kapan harus menekan peringatan

Aman untuk menekan peringatan ini jika performa tidak menjadi perhatian.

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 CA1860
// The code that's violating the rule is on this line.
#pragma warning restore CA1860

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

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

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.