CA1825: Vyhněte se přidělování polí nulové délky

Vlastnost Hodnota
ID pravidla CA1825
Název Vyhněte se přidělení pole s nulovou délkou.
Kategorie Výkon
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 Jako návrh

Příčina

Je přidělen prázdný Array bez prvků.

Popis pravidla

Inicializace pole nulové délky vede k zbytečnému přidělení paměti. Místo toho použijte staticky přidělenou prázdnou instanci pole voláním Array.Empty metody. Přidělení paměti se sdílí napříč všemi vyvoláním této metody.

Jak opravit porušení

Chcete-li opravit porušení, nahraďte přidělení pole nulové délky voláním Array.Empty. Například následující dva fragmenty kódu ukazují porušení pravidla a postup jeho opravy:

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

Tip

Oprava kódu je k dispozici pro toto pravidlo v sadě Visual Studio. Pokud ho chcete použít, umístěte kurzor na přidělení pole a stiskněte ctrl+. (tečka). V zobrazeném seznamu možností zvolte Použít Array.Empty .

Code fix for CA1825 - use array empty

Kdy potlačit upozornění

Pokud vás nezajímá další přidělení paměti, je bezpečné potlačit porušení tohoto pravidla.

Poznámka:

Falešně pozitivní upozornění z tohoto pravidla se můžou zobrazit, pokud platí všechny tyto skutečnosti:

  • Používáte Sadu Visual Studio 2022 verze 17.5 nebo novější se starší verzí sady .NET SDK, tj. .NET 6 nebo starší.
  • Používáte analyzátory ze sady .NET 6 SDK nebo starší verze balíčků analyzátoru, například Microsoft.CodeAnalysis.FxCopAnalyzers.
  • Jako argument atributu používáte pole nulové délky, nejčastěji jako params parametr.

Falešně pozitivní výsledky jsou způsobeny zásadní změnou kompilátoru jazyka C#. Zvažte použití novějšího analyzátoru, který obsahuje opravu falešně pozitivních upozornění. Upgradujte na Microsoft.CodeAnalysis.NetAnalyzers verze 7.0.0-preview1.22464.1 nebo novější nebo použijte analyzátory ze sady .NET 7 SDK.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také