Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
| Propriété | Valeur |
|---|---|
| Identificateur de la règle | IDE0304 |
| Titre | Utiliser l’expression de collection pour le générateur |
| Catégorie | Style |
| Sous-catégorie | Règles de langage (préférences au niveau de l’expression) |
| Langages applicables | C# 12+ |
| Options | dotnet_style_prefer_collection_expression |
Vue d’ensemble
Cette règle indique où ou une méthode CreateBuilder() ou une méthode similaire est appelée pour créer un type de générateur qui ajoute des éléments et construit enfin un type de collection qui a l’attribut CollectionBuilderAttribute (par exemple, en appelant ImmutableArray<T>.Builder.ToImmutable()). Au lieu de cela, une expression de collection ([...]) peut être utilisée pour initialiser la collection.
Remarque
Cette règle nécessite des versions plus récentes des API immuables (par exemple), System.Collections.Immutablequi optent pour le modèle d’expression de collection.
Paramètres
Les options spécifient le comportement que vous souhaitez que la règle applique. Pour plus d’informations sur la configuration des options, consultez Format d’option.
dotnet_style_prefer_collection_expression
| Propriété | Valeur | Descriptif |
|---|---|---|
| Nom d'option | dotnet_style_prefer_collection_expression | |
| Valeurs d’option | true | when_types_exactly_match |
Préférez utiliser des expressions de collection uniquement lorsque 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 sur le côté droit ou être 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.
Exemple
// Code with violation.
var builder = ImmutableArray.CreateBuilder<int>();
builder.Add(1);
builder.AddRange(new int[] { 5, 6, 7 });
ImmutableArray<int> i = builder.ToImmutable();
// Fixed code.
ImmutableArray<int> i = [1, .. new int[] { 5, 6, 7 }];
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 IDE0304
// The code that's violating the rule is on this line.
#pragma warning restore IDE0304
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.IDE0304.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.