CA1825: Unikaj alokacji tablic o zerowej długości

Właściwości Wartość
Identyfikator reguły CA1825
Tytuł Unikaj alokacji tablic o zerowej długości
Kategoria Wydajność
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Jako sugestia

Przyczyna

Array Pusty bez elementów jest przydzielany.

Opis reguły

Inicjowanie tablicy o zerowej długości prowadzi do niepotrzebnej alokacji pamięci. Zamiast tego użyj statycznie przydzielonego pustego wystąpienia tablicy, wywołując metodę Array.Empty . Alokacja pamięci jest współdzielona we wszystkich wywołaniach tej metody.

Jak naprawić naruszenia

Aby naprawić naruszenie, zastąp alokację tablicy o zerowej długości wywołaniem metody Array.Empty. Na przykład następujące dwa fragmenty kodu pokazują naruszenie reguły i sposób jego naprawy:

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>();
    }
}

Napiwek

Poprawka kodu jest dostępna dla tej reguły w programie Visual Studio. Aby go użyć, umieść kursor na alokacji tablicy i naciśnij klawisze Ctrl+. (kropka). Wybierz pozycję Użyj tablicy.Empty z listy przedstawionych opcji.

Code fix for CA1825 - use array empty

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć naruszenie tej reguły, jeśli nie martwisz się o dodatkową alokację pamięci.

Uwaga

Jeśli wszystkie następujące elementy mają zastosowanie, mogą pojawić się ostrzeżenia fałszywie dodatnie z tej reguły:

  • Używasz programu Visual Studio 2022 w wersji 17.5 lub nowszej ze starszą wersją zestawu .NET SDK, czyli platformą .NET 6 lub starszą.
  • Używasz analizatorów z zestawu .NET 6 SDK lub starszej wersji pakietów analizatora, takich jak Microsoft.CodeAnalysis.FxCopAnalyzers.
  • Używasz tablicy o zerowej długości jako argumentu atrybutu, najczęściej jako parametru params .

Wyniki fałszywie dodatnie są spowodowane zmianą powodującą niezgodność w kompilatorze języka C#. Rozważ użycie nowszego analizatora zawierającego poprawkę dla ostrzeżeń fałszywie dodatnich. Przeprowadź uaktualnienie do wersji Microsoft.CodeAnalysis.NetAnalyzers w wersji 7.0.0-preview1.22464.1 lub nowszej lub użyj analizatorów z zestawu .NET 7 SDK.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Zobacz też