Bagikan melalui


Gunakan ekspresi koleksi untuk kosong (IDE0301)

Harta benda Nilai
ID Aturan IDE0301
Judul Gunakan ekspresi koleksi untuk kosong
Kategori Gaya
Subkategori Aturan bahasa (preferensi tingkat ekspresi)
bahasa yang berlaku C# 12+
Opsi dotnet_style_prefer_collection_expression

Ikhtisar

Aturan ini mencari kode yang mirip dengan Array.Empty<T>() (panggilan metode yang mengembalikan koleksi kosong) atau ImmutableArray<T>.Empty (properti yang mengembalikan koleksi kosong) dan menawarkan untuk menggantinya dengan ekspresi koleksi ([]).

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* 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.

Contoh

// Code with violations.
int[] i = Array.Empty<int>();
IEnumerable<int> j = Array.Empty<int>();
ReadOnlySpan<int> span = ReadOnlySpan<int>.Empty;

// Fixed code.
int[] i = [];
IEnumerable<int> j = [];
ReadOnlySpan<int> span = [];

Cuplikan kode berikut menunjukkan contoh dengan jenis kustom.

public class Program
{
    public static void Main()
    {
        // IDE0301 violation.
        MyList<int> x = MyList<int>.Empty;

        // IDE0301 fixed code.
        MyList<int> x = [];
    }
}

class MyList<T> : IEnumerable<T>
{
    public static MyList<T> Empty { get; }

    public IEnumerator<T> GetEnumerator() => default;
    IEnumerator IEnumerable.GetEnumerator() => default;
}

Menyembunyikan peringatan

Jika Anda hanya ingin mengabaikan satu pelanggaran, tambahkan arahan prapemrosesan ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali aturan.

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

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

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