Gunakan ekspresi koleksi untuk stackalloc (IDE0302)

Harta benda Nilai
ID Aturan IDE0302
Titel Gunakan ekspresi koleksi untuk stackalloc
Kategori Gaya
Subkategori Aturan bahasa (preferensi tingkat ekspresi)
Bahasa yang berlaku C# 12+
Pilihan dotnet_style_prefer_collection_expression

Ikhtisar

Aturan ini mirip dengan Gunakan ekspresi koleksi untuk array (IDE0300), namun aturan ini mencari stackalloc daripada array. Seperti IDE0300, ia menawarkan untuk mengonversi kode untuk menggunakan ekspresi koleksi . Misalnya, stackalloc int[] { ... } dan stackalloc [] { ... } disederhanakan untuk [...].

Nota

Aturan ini hanya tersedia di .NET 8 dan versi yang lebih baru di mana nilai dapat dipertahankan pada tumpukan.

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* Sebaiknya gunakan ekspresi koleksi, bahkan ketika tipe datanya tidak sepenuhnya cocok, 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.

Nilai when_types_loosely_match tidak berlaku untuk aturan IDE0302 ini, tetapi disebutkan di sini untuk kelengkapan opsi dotnet_style_prefer_collection_expression (yang diberlakukan untuk beberapa aturan). Nilai default adalah true secara efektif.

Contoh

// Code with violations.
ReadOnlySpan<int> x = stackalloc int[] { 1, 2, 3 };

// Fixed code.
ReadOnlySpan<int> x = [1, 2, 3];

Menyembunyikan peringatan

Jika Anda hanya ingin menekan satu pelanggaran, tambahkan direktif praprosesor ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali aturan tersebut.

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

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

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