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


Используйте выражение для работы с коллекциями для более плавного кода (IDE0305)

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

Обзор

Это правило отмечает места, где построение коллекции осуществляется способом, что означает, где используются такие методы, как Add(), AddRange(), AsSpan(), ToList()и ToArray(). Вместо этого можно использовать выражение для инициализации коллекции. Например, x.AddRange(y).Add(z).AsSpan() преобразуется в [x, ..y, z].

Параметры

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

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> i = new[] { 1, 2, 3 }.ToList();
IEnumerable<int> j = new[] { 1, 2, 3 }.ToList();

// Fixed code.
List<int> i = [1, 2, 3];
IEnumerable<int> j = [1, 2, 3];

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

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

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

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

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

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

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

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

См. также