Compartir a través de


Usar inicializadores o expresiones de colección (IDE0028)

Propiedad Valor
de identificador de regla IDE0028
título de Uso de inicializadores de colección
categoría Estilo
subcategoría de Reglas de lenguaje (preferencias de nivel de expresión)
idiomas aplicables C# y Visual Basic
Opciones dotnet_style_collection_initializer
dotnet_style_prefer_collection_expression

Visión general

Esta regla de estilo se refiere al uso de inicializadores de colección y, si usa C# 12 o posterior, expresiones de colección para la inicialización de colecciones.

En .NET 8 (C# 12) y versiones posteriores, si tiene la opción dotnet_style_prefer_collection_expression establecida en true, la corrección de código en Visual Studio convierte el código de inicialización de la colección para usar una expresión de colección (List<int> list = [1, 2, 3];). En Visual Basic y en .NET 7 (C# 11) y versiones anteriores, la corrección de código convierte el código para usar un inicializador de colección (List<int> list = new List<int> { 1, 2, 3 };).

Nota

Si usa la corrección de código en Visual Studio, el cambio que ofrece puede tener una semántica diferente en algunos casos. Por ejemplo, int[] x = new int[] { } se reemplaza por int[] x = [];, que tiene una semántica ligeramente diferente; el compilador usa un singleton para x en lugar de crear una nueva instancia.

Opciones

Establezca los valores de las opciones asociadas para esta regla para especificar si se prefieren o no inicializadores de colección y expresiones de colección al inicializar colecciones.

Para obtener más información sobre la configuración de opciones, vea Formato de opción.

dotnet_style_collection_initializer

Propiedad Valor Descripción
nombre de opción dotnet_style_collection_initializer
valores de opción true Prefiere usar inicializadores de colección.
false No prefiera inicializadores de colección.
valor de opción predeterminado true

dotnet_style_prefer_collection_expression (solo C#)

Propiedad Valor Descripción
nombre de opción dotnet_style_prefer_collection_expression
valores de opción true Prefiere usar expresiones de colección.
false No prefiera expresiones de colección.
valor de opción predeterminado true

Ejemplos

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

Suprimir una advertencia

Si desea suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

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

Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none en el archivo de configuración de .

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

Para deshabilitar todas las reglas de estilo de código, establezca la gravedad de la categoría Style en none en el archivo de configuración de .

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

Para obtener más información, vea Cómo suprimir advertencias de análisis de código.

Consulte también