Бөлісу құралы:


Использование выражения коллекции для новых (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

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

См. также