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 9 | 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 .
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.