Freigeben über


CA1825: Vermeiden Sie Arrayzuteilungen mit einer Länge von 0 (null).

Eigenschaft Wert
Regel-ID CA1825
Titel Vermeiden Sie Arrayzuteilungen mit einer Länge von 0 (null).
Kategorie Leistung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 9 aktiviert Als Vorschlag

Ursache

Ein leeres Array ohne Elemente ist zugeordnet.

Regelbeschreibung

Die Initialisierung eines Arrays der Länge 0 (null) führt zu einer unnötigen Arbeitsspeicherbelegung. Verwenden Sie stattdessen die statisch zugeordnete leere Array-Instanz, indem Sie die Array.Empty-Methode aufrufen. Die Arbeitsspeicherbelegung wird für alle Aufrufe dieser Methode freigegeben.

Behandeln von Verstößen

Um einen Verstoß zu beheben, ersetzen Sie die Array-Zuteilung der Länge 0 (null) durch einen Aufruf zu Array.Empty. Die folgenden beiden Codeausschnitte zeigen z. B. einen Verstoß gegen die Regel und wie dieser korrigiert werden kann:

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

Tipp

Für diese Regel ist ein Codefix in Visual Studio verfügbar. Um diese zu nutzen, platzieren Sie den Cursor auf dem Array-Verstoß, und drücken Sie STRG+. (Punkt). Wählen Sie in der Liste der angezeigten Optionen Array.Empty verwenden aus.

Codefix für CA1825 - Array Empty verwenden

Wann sollten Warnungen unterdrückt werden?

Es ist sicher, einen Verstoß gegen diese Regel zu unterdrücken, wenn Sie sich keine Gedanken über die zusätzliche Speicherbelegung machen.

Hinweis

Möglicherweise werden falsch positive Warnungen von dieser Regel angezeigt, wenn alle der folgenden Punkte zutreffen:

  • Sie verwenden Visual Studio 2022, Version 17.5 oder höher, mit einer älteren Version des .NET SDK, d. h. .NET 6 oder früher.
  • Sie verwenden die Analysetools aus dem .NET 6 SDK oder einer älteren Version der Analysetoolpakete, z. B. Microsoft. CodeAnalysis.FxCopAnalyzers.
  • Sie verwenden ein Array der Länge Null als Attributargument, am gängigsten als params-Parameter.

Die falsch positiven Warnungen sind auf einen Breaking Change im C#-Compiler zurückzuführen. Erwägen Sie die Verwendung von neueren Analysetools, die den Hotfix für falsch positive Warnungen enthalten. Führen Sie ein Upgrade auf Microsoft. CodeAnalysis.NetAnalyzers Version 7.0.0-preview1.22464.1 oder höher aus, oder verwenden Sie die Analysetools aus dem .NET 7 SDK.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

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

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none fest.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch