Partilhar via


CA1825: Evite alocações de array de comprimento zero

Property valor
ID da regra CA1825
Título Evite alocações de array de comprimento zero
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Como sugestão

Motivo

Um vazio Array sem elementos é alocado.

Descrição da regra

Inicializar uma matriz de comprimento zero leva a uma alocação de memória desnecessária. Em vez disso, use a instância de matriz vazia alocada estaticamente chamando o Array.Empty método. A alocação de memória é compartilhada em todas as invocações desse método.

Como corrigir violações

Para corrigir uma violação, substitua a alocação de matriz de comprimento zero por uma chamada para Array.Empty. Por exemplo, os dois trechos de código a seguir mostram uma violação da regra e como corrigi-la:

class C
{
    public void M1()
    {
        // Violates rule CA1825.
        var a = new int[0];
    }
}
class C
{
    public void M1()
    {
        // Resolves rule CA1825 violation.
        var a = System.Array.Empty<int>();
    }
}

Gorjeta

Uma correção de código está disponível para essa regra no Visual Studio. Para usá-lo, posicione o cursor sobre a alocação da matriz e pressione Ctrl+. (ponto). Escolha Usar Array.Empty na lista de opções apresentada.

Code fix for CA1825 - use array empty

Quando suprimir avisos

É seguro suprimir uma violação desta regra se você não estiver preocupado com a alocação de memória adicional.

Nota

Poderá ver avisos falsos positivos desta regra se todas as seguintes situações se aplicarem:

  • Você está usando o Visual Studio 2022 versão 17.5 ou posterior com uma versão mais antiga do SDK do .NET, ou seja, .NET 6 ou anterior.
  • Você está usando os analisadores do SDK do .NET 6 ou uma versão mais antiga dos pacotes do analisador, como Microsoft.CodeAnalysis.FxCopAnalyzers.
  • Você está usando uma matriz de comprimento zero como um argumento de atributo, mais comumente como um params parâmetro.

Os falsos positivos são devidos a uma mudança de quebra no compilador C#. Considere o uso de um analisador mais recente que contenha a correção para os avisos de falsos positivos. Atualize para Microsoft.CodeAnalysis.NetAnalyzers versão 7.0.0-preview1.22464.1 ou mais recente ou use os analisadores do SDK do .NET 7.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

#pragma warning disable CA1825
// The code that's violating the rule is on this line.
#pragma warning restore CA1825

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

[*.{cs,vb}]
dotnet_diagnostic.CA1825.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também