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