Share via


Usar inicializadores de coleção ou expressões (IDE0028)

Property valor
ID da regra IDE0028
Título Usar inicializadores de coleção
Categoria Estilo
Subcategoria Regras de idioma (preferências no nível da expressão)
Línguas aplicáveis C# e Visual Basic
Opções dotnet_style_collection_initializer
dotnet_style_prefer_collection_expression

Descrição geral

Esta regra de estilo diz respeito ao uso de inicializadores de coleção e, se você estiver usando C# 12 ou posterior, expressões de coleção para inicialização de coleção.

No .NET 8 (C# 12) e versões posteriores, se você tiver a dotnet_style_prefer_collection_expression opção definida como true, o fixador de código no Visual Studio converte o código de inicialização da coleção para usar uma expressão de coleção (List<int> list = [1, 2, 3];). No Visual Basic e no .NET 7 (C# 11) e versões anteriores, o fixador de código converte seu código para usar um inicializador de coleção (List<int> list = new List<int> { 1, 2, 3 };).

Nota

Se você usar o fixador de código no Visual Studio, a alteração que ele oferece pode ter semântica diferente em alguns casos. Por exemplo, é substituído por int[] x = [];, int[] x = new int[] { } que tem semânticas ligeiramente diferentes — o compilador usa um singleton para x em vez de criar uma nova instância.

Opções

Defina os valores das opções associadas para esta regra para especificar se inicializadores de coleção e expressões de coleção são preferidos ao inicializar coleções.

Para obter mais informações sobre como configurar opções, consulte Formato de opção.

dotnet_style_collection_initializer

Property valor Description
Nome da opção dotnet_style_collection_initializer
Valores de opção true Prefira usar inicializadores de coleção.
false Não prefira inicializadores de coleção.
Valor da opção padrão true

dotnet_style_prefer_collection_expression (somente C#)

Property valor Description
Nome da opção dotnet_style_prefer_collection_expression
Valores de opção true Prefira usar expressões de coleção.
false Não prefira expressões de coleção.
Valor da opção padrão true

Exemplos

// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// Fixed code (with dotnet_style_prefer_collection_expression = true)
List<int> list = [1, 2, 3];
' IDE0028 violation.
Dim list = New List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

' Fixed code.
Dim list = New List(Of Integer) From {1, 2, 3}
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

// Fixed code.
List<int> list = new List<int>
{
    1,
    2,
    3
};
// IDE0028 violation.
List<int> list = new List<int>();
list.Add(1);
list.AddRange(new[] { 5, 6, 7 });

// Fixed code.
List<int> list = [1, .. new[] { 5, 6, 7 }];
' IDE0028 violation.
Dim list = New List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

' Fixed code.
Dim list = New List(Of Integer) From {1, 2, 3}

Suprimir um aviso

Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desativar e, em seguida, reativar a regra.

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

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

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

Para desabilitar todas as regras de estilo de código, defina a severidade da categoria Style como none no arquivo de configuração.

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

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também