Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigenschaft | Wert |
|---|---|
| Regel-ID | CA1814 |
| Titel | Bevorzugen Sie gezackte Arrays gegenüber mehrdimensionalen Arrays. |
| Kategorie | Leistung |
| Fix führt zu Unterbrechungen oder bleibt funktionsfähig | Eilmeldung |
| Standardmäßig in .NET 10 aktiviert | Nein |
| Anwendbare Sprachen | C# und Visual Basic |
Ursache
Ein Member wird als mehrdimensionales Array deklariert, was zu einem Verlust von Speicherplatz für einige Datasets führen kann.
Regelbeschreibung
In einem mehrdimensionalen 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.
So beheben Sie Verstöße
Um einen Verstoß gegen diese Regel zu beheben, ändern Sie das mehrdimensionale Array in ein verzahntes 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 auf none in der Konfigurationsdatei 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 Arrays 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}
};
}