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.
| Harta benda | Nilai |
|---|---|
| ID Aturan | IDE0301 |
| Judul | Gunakan ekspresi koleksi untuk kosong |
| Kategori | Gaya |
| Subkategori | Aturan bahasa (preferensi tingkat ekspresi) |
| bahasa yang berlaku | C# 12+ |
| Opsi | dotnet_style_prefer_collection_expression |
Ikhtisar
Aturan ini mencari kode yang mirip dengan Array.Empty<T>() (panggilan metode yang mengembalikan koleksi kosong) atau ImmutableArray<T>.Empty (properti yang mengembalikan koleksi kosong) dan menawarkan untuk menggantinya dengan ekspresi koleksi ([]).
Pilihan
Opsi menentukan perilaku yang Anda inginkan untuk diberlakukan aturan. Untuk informasi tentang mengonfigurasi opsi, lihat format Opsi .
dotnet_style_prefer_collection_expression (preferensi gaya dotnet untuk ekspresi koleksi)
| Harta benda | Nilai | Deskripsi |
|---|---|---|
| Nama opsi | dotnet_style_prefer_collection_expression (preferensi gaya dotnet untuk ekspresi koleksi) | |
| Nilai opsi | true | when_types_exactly_match |
Lebih suka menggunakan ekspresi koleksi hanya ketika jenis cocok persis, misalnya, List<int> list = new List<int>() { 1, 2 };. |
when_types_loosely_match* |
Lebih suka menggunakan ekspresi koleksi bahkan ketika jenisnya hanya cocok sebagian, misalnya, IEnumerable<int> list = new List<int>() { 1, 2 };. Jenis yang ditargetkan harus cocok dengan jenis di sisi kanan atau menjadi salah satu jenis berikut: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>. |
|
false | never |
Menonaktifkan aturan. | |
| nilai opsi default | when_types_loosely_match* |
*Saat opsi ini digunakan, perbaikan kode dapat mengubah semantik kode Anda.
Contoh
// Code with violations.
int[] i = Array.Empty<int>();
IEnumerable<int> j = Array.Empty<int>();
ReadOnlySpan<int> span = ReadOnlySpan<int>.Empty;
// Fixed code.
int[] i = [];
IEnumerable<int> j = [];
ReadOnlySpan<int> span = [];
Cuplikan kode berikut menunjukkan contoh dengan jenis kustom.
public class Program
{
public static void Main()
{
// IDE0301 violation.
MyList<int> x = MyList<int>.Empty;
// IDE0301 fixed code.
MyList<int> x = [];
}
}
class MyList<T> : IEnumerable<T>
{
public static MyList<T> Empty { get; }
public IEnumerator<T> GetEnumerator() => default;
IEnumerator IEnumerable.GetEnumerator() => default;
}
Menyembunyikan peringatan
Jika Anda hanya ingin mengabaikan satu pelanggaran, tambahkan arahan prapemrosesan ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali aturan.
#pragma warning disable IDE0301
// The code that's violating the rule is on this line.
#pragma warning restore IDE0301
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi .
[*.{cs,vb}]
dotnet_diagnostic.IDE0301.severity = none
Untuk menonaktifkan semua aturan gaya kode, atur tingkat keparahan untuk kategori Style ke none dalam file konfigurasi .
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Untuk informasi selengkapnya, lihat Cara menekan peringatan analisis kode.
Lihat juga
- Menggunakan ekspresi koleksi untuk array (IDE0300)