Bagikan melalui


Gunakan penginisialisasi koleksi atau ekspresi (IDE0028)

Harta benda Nilai
ID Aturan IDE0028
Judul Menggunakan penginisialisasi koleksi
Kategori Gaya
Subkategori Aturan bahasa (preferensi tingkat ekspresi)
bahasa yang berlaku C# dan Visual Basic
Opsi dotnet_style_collection_initializer
dotnet_style_prefer_collection_expression

Ikhtisar

Aturan gaya ini menyangkut penggunaan penginisialisasi koleksi dan, jika Anda menggunakan C# 12 atau yang lebih baru, ekspresi koleksi untuk inisialisasi koleksi.

Di .NET 8 (C# 12) dan versi yang lebih baru, jika Anda memiliki opsi dotnet_style_prefer_collection_expression diatur ke true, perbaikan kode di Visual Studio mengonversi kode inisialisasi koleksi Anda untuk menggunakan ekspresi koleksi (List<int> list = [1, 2, 3];). Di Visual Basic dan di .NET 7 (C# 11) dan versi-versi sebelumnya, perbaikan kode mengonversi kode Anda untuk menggunakan inisialisasi koleksi (List<int> list = new List<int> { 1, 2, 3 };).

Nota

Jika Anda menggunakan perbaikan kode di Visual Studio, perubahan yang ditawarkannya mungkin memiliki semantik yang berbeda dalam beberapa kasus. Misalnya, int[] x = new int[] { } diganti dengan int[] x = [];, yang memiliki semantik yang sedikit berbeda—pengkompilasi menggunakan singleton untuk x alih-alih membuat instans baru.

Pilihan

Atur nilai opsi terkait untuk aturan ini untuk menentukan apakah inisialisasi koleksi dan ekspresi koleksi lebih disukai saat menginisialisasi koleksi atau tidak.

Untuk informasi selengkapnya tentang mengonfigurasi opsi, lihat format Opsi .

dotnet_style_collection_initializer

Harta benda Nilai Deskripsi
Nama opsi dotnet_style_collection_initializer
Nilai opsi true Lebih suka menggunakan penginisialisasi koleksi.
false Jangan memilih penginisialisasi koleksi.
nilai opsi default true

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.

(Opsi ini hanya berlaku untuk C#.)

Contoh

// IDE0028 violation.
List<int> list = new List<int>() { 1, 2, 3 };

// Fixed code (with dotnet_style_prefer_collection_expression = true)
List<int> list = [1, 2, 3];
' IDE0028 violation.
Dim list = New List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

' Fixed code.
Dim list = New List(Of Integer) From {1, 2, 3}

Menyembunyikan peringatan

Jika Anda hanya ingin mengabaikan satu pelanggaran, tambahkan arahan praprosesor ke file sumber Anda untuk menonaktifkan dan kemudian mengaktifkan kembali aturan.

#pragma warning disable IDE0028
// The code that's violating the rule is on this line.
#pragma warning restore IDE0028

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

[*.{cs,vb}]
dotnet_diagnostic.IDE0028.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