Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Propriedade | Valor |
|---|---|
| ID da regra | IDE0306 |
| Título | Usar expressão de coleção para novo |
| Categoria | Estilo |
| Subcategoria | Regras de linguagem (preferências no nível de expressão) |
| Linguagens aplicáveis | C# 12+ |
| Opções | dotnet_style_prefer_collection_expression |
Visão geral
Esta regra sinaliza lugares onde uma expressão de coleção com um elemento de propagação (..) pode ser usada para inicializar uma lista em vez de new. Por exemplo, essa regra oferece a simplificação do código, transformando códigos 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 opções de configuração, consulte Formato para opções.
dotnet_style_prefer_collection_expression
| Propriedade | Valor | Descrição |
|---|---|---|
| Nome da opção | dotnet_style_prefer_collection_expression | |
| Valores da 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 não coincidirem exatamente, por exemplo, IEnumerable<int> list = new List<int>() { 1, 2 };. O tipo de destino deve corresponder ao tipo no lado direito ou ser um dos seguintes tipos: IEnumerable<T>, ICollection<T>, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>. |
|
false | never |
Desabilita a regra. | |
| Valor da opção padrão | when_types_loosely_match* |
*Quando essa opção é usada, a correção de código pode alterar a semântica do 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 seu arquivo de origem para desabilitar a regra e, em seguida, habilitá-la novamente.
#pragma warning disable IDE0306
// The code that's violating the rule is on this line.
#pragma warning restore IDE0306
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade 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, confira Como suprimir avisos de análise de código.