Поделиться через


Использовать выражение коллекции для stackalloc (IDE0302)

Свойство Ценность
Идентификатор правила IDE0302
Титул Используйте выражение коллекции для stackalloc
Категория Стиль
Подкатегории Языковые правила (предпочтения уровня выражений)
Применимые языки С# 12+
Параметры dotnet_style_prefer_collection_expression

Обзор

Это правило аналогично использованию выражения коллекции для массива (IDE0300), за исключением того, что он ищет stackalloc вместо массивов. Как и IDE0300, он предлагает преобразовать код для использования выражения коллекции . Например, stackalloc int[] { ... } и stackalloc [] { ... } упрощены до [...].

Заметка

Это правило доступно только в .NET 8 и более поздних версиях, где значения можно сохранить в стеке.

Параметры

Параметры указывают поведение, которое требуется применить правило. Сведения о настройке параметров см. в разделе "Формат параметров".

dotnet_style_prefer_collection_expression

Свойство Ценность Описание
Имя параметра dotnet_style_prefer_collection_expression
Значения параметров true | when_types_exactly_match Предпочитайте использовать выражения коллекции только в том случае, если типы совпадают точно, например, List<int> list = new List<int>() { 1, 2 };.
when_types_loosely_match* Предпочитайте использовать выражения коллекций даже если соответствие типов нестрогое, например, IEnumerable<int> list = new List<int>() { 1, 2 };. Целевой тип должен соответствовать типу справа или быть одним из следующих типов: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>.
false | never Отключает правило.
Значение параметра по умолчанию when_types_loosely_match*

*При использовании этого параметра исправление кода может изменить семантику кода.

Значение when_types_loosely_match для этого правила IDE0302не применяется, но указано здесь для полноты dotnet_style_prefer_collection_expression параметра (который используется несколькими правилами). Значение по умолчанию по сути true.

Пример

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

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

Подавление предупреждения

Если вы хотите отключить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

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

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации .

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

Чтобы отключить все правила стиля кода, задайте уровень серьезности для категории Style, чтобы none в файле конфигурации .

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

Дополнительные сведения см. в разделе "Подавление предупреждений анализа кода".

См. также