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


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

Свойство Ценность
идентификатор правила IDE0305
Заголовок Используйте выражение коллекции для Fluent
Категория Стиль
подкатегория Языковые правила (предпочтения уровня выражений)
применимые языки C# 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[] { 1, 2, 3 }.ToList();.
when_types_loosely_match
(.NET 9 и более поздних версий)*
Предпочтительно использовать выражения коллекций, даже если типы совпадают не строго, например, IEnumerable<int> list = new[] { 1, 2, 3 }.ToList();. Целевой тип должен соответствовать типу справа или быть одним из следующих типов: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>.
false | never Отключает правило.
значение параметра по умолчанию true в .NET 8
when_types_loosely_match в .NET 9 и более поздних версиях

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

Пример

// 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

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

См. также