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

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

Обзор

Это правило помечает, где CreateBuilder() вызывается или аналогичный метод для создания типа построителя, который добавляет элементы и, наконец, создает тип коллекции, имеющий CollectionBuilderAttribute атрибут (например, путем вызова ImmutableArray<T>.Builder.ToImmutable()). Вместо этого можно использовать выражение коллекции ([...]) для инициализации коллекции.

Примечание.

Для этого правила требуются более последние версии неизменяемых API (например, System.Collections.Immutableкоторые выбирают шаблон коллекции выражений).

Параметры

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

dotnet_style_prefer_collection_expression

Свойство Значение Описание
Имя параметра dotnet_style_prefer_collection_expression
Значения параметра true | when_types_exactly_match Предпочитать использовать выражения коллекции только в том случае, если типы соответствуют точно.
when_types_loosely_match
(.NET 9 и более поздние версии)*
Предпочитайте использовать выражения коллекции, даже если типы соответствуют свободно. Целевой тип должен соответствовать типу справа или быть одним из следующих типов: IEnumerable<T>, , ICollection<T>IList<T>, . IReadOnlyList<T>IReadOnlyCollection<T>
false | never Отключает проблемное правило.
Значение параметра по умолчанию true в .NET 8
when_types_loosely_match в .NET 9 и более поздних версиях

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

Пример

// Code with violation.
var builder = ImmutableArray.CreateBuilder<int>();
builder.Add(1);
builder.AddRange(new int[] { 5, 6, 7 });
ImmutableArray<int> i = builder.ToImmutable();

// Fixed code.
ImmutableArray<int> i = [1, .. new int[] { 5, 6, 7 }];

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

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

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

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

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

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

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

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

См. также