Menggunakan ekspresi koleksi untuk array (IDE0300)
Properti | Nilai |
---|---|
ID Aturan | IDE0300 |
Judul | Menggunakan ekspresi koleksi untuk array |
Golongan | Gaya |
Subkategori | Aturan bahasa (preferensi tingkat ekspresi) |
Bahasa pemrogram yang berlaku | C# 12+ |
Opsi | dotnet_style_prefer_collection_expression |
Gambaran Umum
Aturan ini menandai tempat ekspresi koleksi dapat digunakan untuk menginisialisasi array. Misalnya, aturan ini menawarkan untuk menyederhanakan kode seperti new C[] { ... }
, new[] { ... }
, dan C[] c = { ... }
ke dalam formulir ekspresi koleksi ([...]
).
Opsi
Opsi menentukan perilaku yang Anda inginkan untuk diberlakukan aturan. Untuk informasi tentang mengonfigurasi opsi, lihat Format opsi.
dotnet_style_prefer_collection_expression
Properti | Nilai | Deskripsi |
---|---|---|
Nama opsi | dotnet_style_prefer_collection_expression | |
Nilai opsi | true | when_types_exactly_match |
Lebih suka menggunakan ekspresi koleksi hanya ketika jenis cocok persis, misalnya, int[] i = new int[] { 1, 2, 3 }; . |
when_types_loosely_match (.NET 9 dan versi yang lebih baru)* |
Lebih suka menggunakan ekspresi koleksi bahkan ketika jenis cocok secara longgar, misalnya, IEnumerable<int> i = new int[] { 1, 2, 3 }; . 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 | true dalam .NET 8when_types_loosely_match di .NET 9 dan versi yang lebih baru |
*Perbaikan kode saat opsi ini digunakan dapat mengubah semantik kode Anda. Misalnya, jika Anda memiliki IEnumerable<int> x = new int[] { 1, 2, 3 };
, maka dalam kode asli, array diproduksi. Tetapi dalam kode baru (IEnumerable<int> x = [1, 2, 3];
), jenis kompilator internal yang disintesis diproduksi sebagai gantinya. Anda dapat mengamati perbedaan ini jika Anda menggunakan is
pemeriksaan atau pemeran.
Contoh
// Code with violations.
int[] i = new int[] { 1, 2, 3 };
IEnumerable<int> j = new int[] { 1, 2, 3 };
// Fixed code.
int[] i = [1, 2, 3];
IEnumerable<int> j = [1, 2, 3];
Menyembunyikan peringatan
Jika Anda hanya ingin menekan satu pelanggaran, tambahkan arahan prapemroseduran ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali aturan.
#pragma warning disable IDE0300
// The code that's violating the rule is on this line.
#pragma warning restore IDE0300
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.IDE0300.severity = none
Untuk menonaktifkan semua aturan gaya kode, atur tingkat keparahan none
untuk kategori Style
ke dalam file konfigurasi.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk