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 9 | 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 Ctrl+. (kropka). Wybierz pozycję Użyj tablicy.Empty z listy przedstawionych opcji.
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.