Partager via


Utiliser des initialiseurs ou des expressions de collection (IDE0028)

Propriété Valeur
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 des expressions)
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 d'initialiseurs de collection et, si vous utilisez C# 12 ou une version ultérieure, d'expressions de collection pour l'initialisation de collection.

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

Remarque

Si vous utilisez le correctif de code dans Visual Studio, la modification qu'elle propose peut avoir une sémantique différente dans certains cas. Par exemple, int[] x = new int[] { } est remplacé par int[] x = [];, qui a une sémantique légèrement différente : le compilateur utilise un singleton pour x au lieu de créer une nouvelle instance.

Paramètres

Définissez les valeurs des options associées à cette règle pour spécifier si les initialiseurs de collection et les expressions de collection sont préférés 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 Descriptif
Nom de l’option dotnet_style_collection_initializer
Valeurs d’option true Préférez utiliser les initialiseurs de collection.
false Ne pas préférer les initialiseurs de collectio
Valeur d’option par défaut true

dotnet_style_prefer_collection_expression

Propriété Valeur Descriptif
Nom de l’option dotnet_style_prefer_collection_expression
Valeurs d’option true | when_types_exactly_match Préférez l’utilisation d’expressions de collection uniquement quand les types correspondent exactement, par exemple List<int> list = new List<int>() { 1, 2 };.
when_types_loosely_match* Préférez utiliser des expressions de collection même lorsque les types ne correspondent pas exactement, par exemple, IEnumerable<int> list = new List<int>() { 1, 2 };. Le type ciblé doit correspondre au type figurant sur le côté droit, ou représenter l’un des types suivants : IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>.
false | never Il désactive la règle.
Valeur d’option par défaut when_types_loosely_match*

*Lorsque cette option est utilisée, le correctif de code peut modifier la sémantique de votre code.

(Cette option s’applique uniquement à C#.)

Exemples

// IDE0028 violation.
List<int> list = new List<int>() { 1, 2, 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}

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