Utiliser des expressions ou des initialiseurs de collections (IDE0028)

Propriété Value
Identificateur de la règle IDE0028
Titre Utiliser des initialiseurs de collections
Catégorie Style
Sous-catégorie Règles de langage (préférences au niveau de l’expression)
Langages applicables C# et Visual Basic
Options dotnet_style_collection_initializer
dotnet_style_prefer_collection_expression

Vue d’ensemble

Cette règle de style concerne l’utilisation des initialiseurs de collections et, si vous utilisez C# 12 ou version ultérieure, des expressions de collections pour l’initialisation de collections.

Dans .NET 8 (C# 12) et versions ultérieures, si vous avez l’option dotnet_style_prefer_collection_expression définie sur true, le correcteur de code dans Visual Studio convertit votre code d’initialisation de collections pour utiliser une expression de collection (List<int> list = [1, 2, 3];). Dans Visual Basic et dans .NET 7 (C# 11) et versions antérieures, le correcteur de code convertit votre code pour utiliser un initialiseur de collections (List<int> list = new List<int> { 1, 2, 3 };).

Remarque

Si vous utilisez le correcteur de code dans Visual Studio, il est possible que la modification qu’elle offre ait une sémantique différente dans certains cas. Par exemple, int[] x = new int[] { } est remplacé par int[] x = [];, qui est une sémantique légèrement différente : le compilateur utilise un singleton pour x au lieu de créer une instance.

Options

Définissez les valeurs de l’option associée pour cette règle afin de spécifier si des expressions de collections et des initialiseurs de collections sont préférés ou non lors de l’initialisation des collections.

Pour plus d’informations sur la configuration des options, consultez Format d’option.

dotnet_style_collection_initializer

Propriété Valeur Description
Nom d'option dotnet_style_collection_initializer
Valeurs d’option true Préférez l’utilisation des initialiseurs de collections.
false Ne préférez pas l’utilisation des initialiseurs de collections.
Valeur d’option par défaut true

dotnet_style_prefer_collection_expression (C# uniquement)

Propriété Valeur Description
Nom d'option dotnet_style_prefer_collection_expression
Valeurs d’option true Préférez l’utilisation d’expressions de collections.
false Ne préférez pas les expressions de collections.
Valeur d’option par défaut true

Exemples

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

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

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

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

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

Pour désactiver toutes les règles de style de code, définissez la gravité de la catégorie Style sur none dans le fichier de configuration.

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

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Voir aussi