Sdílet prostřednictvím


Použití výrazu pro prázdnou kolekci (IDE0301)

Vlastnost Hodnota
ID pravidla IDE0301
název Použijte výraz kolekce pro prázdnou hodnotu
kategorie Styl
podkategorie Jazyková pravidla (předvolby na úrovni výrazu)
příslušné jazyky C# 12+
Možnosti dotnet_style_prefer_collection_expression

Přehled

Toto pravidlo hledá kód podobný Array.Empty<T>() (volání metody, která vrací prázdnou kolekci) nebo ImmutableArray<T>.Empty (vlastnost, která vrací prázdnou kolekci) a nabízí nahradit ho výrazem kolekce ([]).

Možnosti

Možnosti určují chování, které má pravidlo vynutit. Informace o konfiguraci možností naleznete v tématu Formát možnosti.

dotnet_style_prefer_collection_expression (preferovat výrazy kolekcí v kódu)

Vlastnost Hodnota Popis
název možnosti dotnet_style_prefer_collection_expression (preferovat výrazy kolekcí v kódu)
Hodnoty možností true | when_types_exactly_match Raději používejte výrazy kolekce pouze v případě, že se typy přesně shodují, například List<int> list = new List<int>() { 1, 2 };.
when_types_loosely_match* Raději používejte výrazy kolekce, i když se typy volně shodují, například IEnumerable<int> list = new List<int>() { 1, 2 };. Cílový typ musí odpovídat typu na pravé straně nebo musí být jedním z následujících typů: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>.
false | never Deaktivuje pravidlo.
výchozí hodnota možnosti when_types_loosely_match*

*Při použití této možnosti může oprava kódu změnit sémantiku kódu.

Příklad

// 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 = [];

Následující fragment kódu ukazuje příklad s vlastním typem.

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;
}

Potlačte upozornění

Pokud chcete potlačit pouze jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .

[*.{cs,vb}]
dotnet_diagnostic.IDE0301.severity = none

Chcete-li zakázat všechna pravidla stylu kódu, nastavte závažnost pro kategorii Style na none v konfiguračním souboru .

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také