Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| 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 10 | Sebagai saran |
Penyebab
Enumerable.Anydipanggil pada jenis yang memiliki properti , , atau LengthCountIsEmpty
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 Linq Count(), sementara aturan ini menyarankan penggunaan Count .
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.