Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
| Propriedade | Valor |
|---|---|
| ID da regra | IDE0306 |
| Título | Usar expressão de coleção para criar novo |
| Categoria | Estilo |
| Subcategoria | Regras de idioma (preferências no nível da expressão) |
| Línguas aplicáveis | C# 12+ |
| Opções | dotnet_style_prefer_collection_expression |
Visão geral
Esta regra sinaliza locais onde uma expressão de coleção com um elemento spread (..) pode ser usada para inicializar uma lista em vez de new. Por exemplo, esta regra propõe simplificar o código como new List<...>(x) na forma de expressão de coleção ([.. x]).
Opções
As opções especificam o comportamento que você deseja que a regra imponha . Para obter informações sobre como configurar opções, consulte Formato de opção.
dotnet_style_prefer_collection_expression
| Propriedade | Valor | Descrição |
|---|---|---|
| Nome da opção | dotnet_style_prefer_collection_expression | |
| Valores de opção | true | when_types_exactly_match |
Prefira usar expressões de coleção somente quando os tipos corresponderem exatamente, por exemplo, List<int> list = new List<int>() { 1, 2 };. |
when_types_loosely_match* |
Prefira usar expressões de coleção mesmo quando os tipos correspondem vagamente, por exemplo, IEnumerable<int> list = new List<int>() { 1, 2 };. O tipo visado deve corresponder ao tipo do lado direito ou ser um dos seguintes tipos: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>. |
|
false | never |
Desativa a regra. | |
| Valor da opção padrão | when_types_loosely_match* |
*Quando esta opção é usada, a correção de código pode alterar a semântica do seu código.
Exemplo
// Code with violation.
List<int> l1 = new List<int>(Enumerable.Range(1, 10));
List<int> m1 = new List<int>(new[] { 1, 2, 3 });
// Fixed code.
List<int> l1 = [.. Enumerable.Range(1, 10)];
List<int> m1 = [.. new[] { 1, 2, 3 }];
Suprimir um aviso
Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable IDE0306
// The code that's violating the rule is on this line.
#pragma warning restore IDE0306
Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração .
[*.{cs,vb}]
dotnet_diagnostic.IDE0306.severity = none
Para desabilitar todas as regras de estilo de código, defina a severidade da categoria Style como none no arquivo de configuração .
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.
Ver também
- Usar expressão de coleção para matriz (IDE0300)
- Usar expressão de coleção para a coleção vazia (IDE0301)
- Usar expressão de coleção para stackalloc (IDE0302)
-
Usar expressão de coleção para
Create()(IDE0303) - Usar expressão de coleção para o construtor (IDE0304)
- Usar expressão de coleção fluente (IDE0305)