CA1814: Jagged Arrays mehrdimensionalen Arrays vorziehen.
Eigenschaft | Wert |
---|---|
Regel-ID | CA1814 |
Titel | Jagged Arrays mehrdimensionalen Arrays vorziehen. |
Kategorie | Leistung |
Fix führt oder führt nicht zur Unterbrechung | Breaking |
Standardmäßig in .NET 8 aktiviert | Nein |
Ursache
Ein Member wird als mehrdimensionales Array deklariert, was zu einem Verlust von Speicherplatz für einige Datasets führen kann.
Regelbeschreibung
In einem dimensionalen Array hat jedes Element in jeder Dimension dieselbe, festgelegte Größe wie die anderen Elemente in dieser Dimension. In einem Jagged Array, bei dem es sich um ein Array von Arrays handelt, kann jedes innere Array eine andere Größe aufweisen. Wenn nur der für ein bestimmtes Array benötigte Speicherplatz verwendet wird, wird kein Speicherplatz verschwendet. Diese Regel, CA1814, empfiehlt, zu einem Jagged Array zu wechseln, um Speicherplatz zu sparen.
Behandeln von Verstößen
Um einen Verstoß dieser Regel zu beheben, ändern Sie das mehrdimensionale Array zu einem Jagged Array.
Wann sollten Warnungen unterdrückt werden?
Es ist in Ordnung, eine Warnung aus dieser Regel zu unterdrücken, wenn das mehrdimensionale Array keinen Speicherplatz verschwendet.
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 CA1814
// The code that's violating the rule is on this line.
#pragma warning restore CA1814
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.CA1814.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Beispiel
Das folgende Beispiel zeigt Deklarationen für Jagged und mehrdimensionale Arrays.
Imports System
Public Class ArrayHolder
Private jaggedArray As Integer()() = {New Integer() {1, 2, 3, 4}, _
New Integer() {5, 6, 7}, _
New Integer() {8}, _
New Integer() {9}}
Private multiDimArray As Integer(,) = {{1, 2, 3, 4}, _
{5, 6, 7, 0}, _
{8, 0, 0, 0}, _
{9, 0, 0, 0}}
End Class
public class ArrayHolder
{
int[][] jaggedArray = { new int[] {1,2,3,4},
new int[] {5,6,7},
new int[] {8},
new int[] {9}
};
int[,] multiDimArray = {{1,2,3,4},
{5,6,7,0},
{8,0,0,0},
{9,0,0,0}
};
}