Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnost | Hodnota |
|---|---|
| ID pravidla | CA1814 |
| Název | Upřednostněte zubatá pole před vícerozměrnými |
| Kategorie | Výkon |
| Oprava, která může být destruktivní nebo nedestruktivní | Přerušující |
| Povoleno ve výchozím nastavení v .NET 10 | Ne |
| Příslušné jazyky | C# a Visual Basic |
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 zubatém poli, což je pole polí, může mít každé vnitřní pole jinou velikost. Použitím pouze tolik prostoru, kolik je pro dané pole potřeba, se žádné místo neplýtvá. Toto pravidlo CA1814 doporučuje přepnout na roztřepené pole, aby se ušetřila paměť.
Jak opravit porušení
Chcete-li opravit porušení tohoto pravidla, změňte multidimenzionální pole na zubaté pole.
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 zubatá 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}
};
}