Partilhar via


Usar expressão de coleção para matriz (IDE0300)

Propriedade Valor
ID da regra IDE0300
Título Usar expressão de coleção para matriz
Categoria Estilo
Subcategoria Regras de idioma (preferências no nível da expressão)
Idiomas 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 de pode ser usada para inicializar uma matriz. Por exemplo, esta regra oferece simplificar códigos como new C[] { ... }, new[] { ... }e C[] c = { ... } na forma de expressão de coleção ([...]).

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, int[] i = new int[] { 1, 2, 3 };.
when_types_loosely_match
(.NET 9 e versões posteriores)*
Prefira usar expressões de coleção mesmo quando os tipos correspondem vagamente, por exemplo, IEnumerable<int> i = new int[] { 1, 2, 3 };. 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 true no .NET 8
when_types_loosely_match no .NET 9 e versões posteriores

*A correção de código quando essa opção é usada pode alterar a semântica do seu código. Por exemplo, se você tinha IEnumerable<int> x = new int[] { 1, 2, 3 };, então no código original, uma matriz é produzida. Mas no novo código (IEnumerable<int> x = [1, 2, 3];), um tipo interno sintetizado por compilador é produzido em vez disso. Pode observar esta diferença se usar uma verificação is ou uma conversão.

Exemplo

// Code with violations.
int[] i = new int[] { 1, 2, 3 };
IEnumerable<int> j = new int[] { 1, 2, 3 };

// Fixed code.
int[] i = [1, 2, 3];
IEnumerable<int> j = [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 IDE0300
// The code that's violating the rule is on this line.
#pragma warning restore IDE0300

Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração .

[*.{cs,vb}]
dotnet_diagnostic.IDE0300.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