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.