Udostępnij za pomocą


Używanie wyrażenia kolekcji dla obiektu stackalloc (IDE0302)

Własność Wartość
identyfikator reguły IDE0302
Tytuł Używanie wyrażenia kolekcji dla obiektu stackalloc
Kategoria Styl
podkategoria Reguły języka (preferencje na poziomie wyrażenia)
Stosowane języki Język C# 12+
opcje dotnet_style_prefer_collection_expression

Przegląd

Ta reguła jest podobna do Użyj wyrażenia kolekcji dla tablicy (IDE0300), ale zamiast tablic wyszukuje stackalloc. Podobnie jak IDE0300, oferuje przekształcenie kodu na użycie wyrażenia kolekcji . Na przykład stackalloc int[] { ... } i stackalloc [] { ... } są uproszczone do [...].

Notatka

Ta reguła jest dostępna tylko na platformie .NET 8 i nowszych wersjach, w których wartości można zachować na stosie.

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 (preferencja stylu .NET do wyrażania się w kolekcjach)

Własność Wartość Opis
nazwa opcji dotnet_style_prefer_collection_expression (preferencja stylu .NET do wyrażania się w kolekcjach)
Wartości Opcji true | when_types_exactly_match Preferuj używanie wyrażeń kolekcji tylko wtedy, gdy typy są dokładnie zgodne, na przykład List<int> list = new List<int>() { 1, 2 };.
when_types_loosely_match* Wolisz używać wyrażeń kolekcji nawet wtedy, gdy typy są luźno zgodne, na przykład IEnumerable<int> list = new List<int>() { 1, 2 };. 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łę.
domyślna wartość opcji when_types_loosely_match*

*Gdy ta opcja jest używana, poprawka kodu może zmienić semantyka kodu.

Wartość when_types_loosely_match nie ma zastosowania do tej reguły IDE0302, ale jest podana tutaj dla pełności dotnet_style_prefer_collection_expression opcji (która jest używana przez wiele reguł). Wartość domyślna to w rzeczywistości true.

Przykład

// Code with violations.
ReadOnlySpan<int> x = stackalloc int[] { 1, 2, 3 };

// Fixed code.
ReadOnlySpan<int> x = [1, 2, 3];

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji .

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

Aby wyłączyć wszystkie zasady stylu kodowania, ustaw poziom ważności kategorii Style na none w pliku konfiguracyjnym .

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia analizy kodu.

Zobacz też