Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnost | Hodnota |
|---|---|
| ID pravidla | IDE0304 |
| Název | Použijte výraz kolekce pro tvůrce |
| 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čuje místa, kde je volána metoda CreateBuilder() nebo podobná metoda pro vytvoření "builder" typu, který nejprve přidává prvky a nakonec sestaví kolekční typ s atributem CollectionBuilderAttribute (například voláním ImmutableArray<T>.Builder.ToImmutable()). Místo toho lze k inicializaci kolekce použít výraz kolekce ([...]).
Poznámka:
Toto pravidlo vyžaduje novější verze neměnných rozhraní API (například System.Collections.Immutable), které využívají vzor výrazů 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žností.
dotnet_style_prefer_collection_expression (nastavení preferencí pro styl kolekce v dotnetu)
| Vlastnost | 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.
var builder = ImmutableArray.CreateBuilder<int>();
builder.Add(1);
builder.AddRange(new int[] { 5, 6, 7 });
ImmutableArray<int> i = builder.ToImmutable();
// Fixed code.
ImmutableArray<int> i = [1, .. new int[] { 5, 6, 7 }];
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 IDE0304
// The code that's violating the rule is on this line.
#pragma warning restore IDE0304
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.IDE0304.severity = none
Pokud chcete 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.