Bagikan melalui


Menggunakan penginisialisasi atau ekspresi koleksi (IDE0028)

Properti Nilai
ID Aturan IDE0028
Judul Menggunakan penginisialisasi koleksi
Golongan Gaya
Subkategori Aturan bahasa (preferensi tingkat ekspresi)
Bahasa pemrogram yang berlaku C# dan Visual Basic
Opsi dotnet_style_collection_initializer
dotnet_style_prefer_collection_expression

Gambaran Umum

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 dotnet_style_prefer_collection_expression opsi yang 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 yang lebih lama, perbaikan kode mengonversi kode Anda untuk menggunakan penginisialisasi koleksi (List<int> list = new List<int> { 1, 2, 3 };).

Catatan

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 satuton untuk x alih-alih membuat instans baru.

Opsi

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

Properti Nilai Deskripsi
Nama opsi dotnet_style_collection_initializer
Nilai opsi true Lebih suka menggunakan penginisialisasi koleksi.
false Jangan lebih suka penginisialisasi koleksi.
Nilai opsi default true

dotnet_style_prefer_collection_expression (khusus C#)

Properti Nilai Deskripsi
Nama opsi dotnet_style_prefer_collection_expression
Nilai opsi true Lebih suka menggunakan ekspresi koleksi.
false Jangan lebih suka ekspresi koleksi.
Nilai opsi default true

Contoh

// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(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}
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// Fixed code.
List<int> list = new List<int>
{
    1,
    2,
    3
};
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.AddRange(new[] { 5, 6, 7 });

// Fixed code.
List<int> list = [1, .. new[] { 5, 6, 7 }];
' 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 menekan satu pelanggaran, tambahkan arahan prapemroseduran ke file sumber Anda untuk menonaktifkan lalu 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 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