Bagikan melalui


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