Bagikan melalui


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