Sdílet prostřednictvím


Použijte výraz kolekce pro novou funkčnost (IDE0306)

Vlastnictví Hodnota
Identifikátor pravidla IDE0306
Název Využití výrazu kolekce pro novou
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 označí místa, kde výraz kolekce s elementem rozprostření (..) lze použít k inicializaci seznamu místo new. Toto pravidlo například nabízí zjednodušení kódu jako new List<...>(x) ve formuláři výrazu kolekce ([.. x]).

Možnosti

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

dotnet_style_prefer_collection_expression (nastavení preferencí pro styl kolekce v dotnetu)

Vlastnictví Hodnota Popis
Název možnosti dotnet_style_prefer_collection_expression (nastavení preferencí pro styl kolekce v dotnetu)
Hodnoty možností true | when_types_exactly_match Raději používejte výrazy kolekce pouze tehdy, když se typy přesně shodují, List<int> list = new List<int>() { 1, 2 };například .
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 violation.
List<int> l1 = new List<int>(Enumerable.Range(1, 10));
List<int> m1 = new List<int>(new[] { 1, 2, 3 });

// Fixed code.
List<int> l1 = [.. Enumerable.Range(1, 10)];
List<int> m1 = [.. new[] { 1, 2, 3 }];

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 IDE0306
// The code that's violating the rule is on this line.
#pragma warning restore IDE0306

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.IDE0306.severity = none

Pokud chcete zakázat všechna pravidla pro styl 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é