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