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


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

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

Обзор

Это правило помечает, где выражение коллекции с распределенным элементом (..) можно использовать для инициализации списка вместо new. Например, это правило предлагает упростить код, как new List<...>(x) в форме выражения коллекции ([.. x]).

Опции

Параметры указывают на поведение, которое вы хотите зафиксировать с помощью правила. Для получения информации о настройке параметров см. раздел "Формат параметров".

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*

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

Пример

// 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 }];

Отключение предупреждений

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

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

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

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

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

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

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

См. также