Używanie wyrażenia kolekcji dla konstruktora (IDE0304)
Właściwości | Wartość |
---|---|
Identyfikator reguły | IDE0304 |
Tytuł | Używanie wyrażenia kolekcji dla konstruktora |
Kategoria | Styl |
Podkategorii | Reguły języka (preferencje na poziomie wyrażenia) |
Odpowiednie języki | C# 12+ |
Opcje | dotnet_style_prefer_collection_expression |
Omówienie
Ta reguła flaguje miejsca, w których CreateBuilder()
wywoływana jest lub podobna metoda w celu utworzenia typu konstruktora, który dodaje elementy, a na koniec tworzy typ kolekcji, który ma CollectionBuilderAttribute atrybut (na przykład przez wywołanie metody ImmutableArray<T>.Builder.ToImmutable()). Zamiast tego można użyć wyrażenia kolekcji ([...]
), aby zainicjować kolekcję.
Uwaga
Ta reguła wymaga nowszych wersji niezmiennych interfejsów API (na przykład System.Collections.Immutable), które decydują się na wzorzec wyrażenia kolekcji.
Opcje
Opcje określają zachowanie, które ma być wymuszane przez regułę. Aby uzyskać informacje na temat konfigurowania opcji, zobacz Format opcji.
dotnet_style_prefer_collection_expression
Właściwości | Wartość | Opis |
---|---|---|
Nazwa opcji | dotnet_style_prefer_collection_expression | |
Wartości opcji | true | when_types_exactly_match |
Wolisz używać wyrażeń kolekcji tylko wtedy, gdy typy są dokładnie zgodne. |
when_types_loosely_match (.NET 9 i nowsze wersje)* |
Wolisz używać wyrażeń kolekcji nawet wtedy, gdy typy są luźno zgodne. Typ docelowy musi być zgodny z typem po prawej stronie lub być jednym z następujących typów: IEnumerable<T>, , ICollection<T>IList<T>, IReadOnlyCollection<T>, . IReadOnlyList<T> | |
false | never |
Wyłącza regułę. | |
Wartość opcji domyślnej | true na platformie .NET 8when_types_loosely_match w programie .NET 9 i nowszych wersjach |
*Poprawka kodu, gdy ta opcja jest używana, może zmienić semantyka kodu.
Przykład
// 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 }];
Pomijanie ostrzeżenia
Jeśli chcesz pominąć tylko jedno naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable IDE0304
// The code that's violating the rule is on this line.
#pragma warning restore IDE0304
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.IDE0304.severity = none
Aby wyłączyć wszystkie reguły stylu kodu, ustaw ważność dla kategorii Style
na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.