CA1814: Preferujte vícenásobná pole více než multidimenzionální
Vlastnost | Hodnota |
---|---|
ID pravidla | CA1814 |
Název | Upřednostněte vícenásobná pole před multidimenzionálními |
Kategorie | Výkon |
Oprava způsobující chybu nebo chybu způsobující chybu | Narušující |
Povoleno ve výchozím nastavení v .NET 9 | No |
Příčina
Člen je deklarován jako multidimenzionální pole, což může vést k plýtvání prostorem pro některé datové sady.
Popis pravidla
V multidimenzionálním poli má každý prvek v každé dimenzi stejnou pevnou velikost jako ostatní prvky v této dimenzi. V liché matici, což je matice polí, může mít každá vnitřní matice jinou velikost. Použitím prostoru potřebného pro dané pole se nevymýtá mezera. Toto pravidlo CA1814 doporučuje přepnout na zaseknutou matici, aby se ušetřila paměť.
Jak opravit porušení
Chcete-li opravit porušení tohoto pravidla, změňte multidimenzionální pole na zaseknutou matici.
Kdy potlačit upozornění
Pokud multidimenzionální pole nevyhazuje místo, je v pořádku potlačit upozornění z tohoto pravidla.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA1814
// The code that's violating the rule is on this line.
#pragma warning restore CA1814
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA1814.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Příklad
Následující příklad ukazuje deklarace pro jagged a multidimenzionální pole.
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}
};
}