CA1814: Wybieraj tablice nieregularne zamiast wielowymiarowych
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1814 |
Tytuł | Wybieraj tablice nieregularne zamiast wielowymiarowych |
Kategoria | Wydajność |
Poprawka powodująca niezgodność lub niezgodność | Kluczowa |
Domyślnie włączone na platformie .NET 9 | Nie. |
Przyczyna
Element członkowski jest zadeklarowany jako tablica wielowymiarowa, co może spowodować marnowanie miejsca dla niektórych zestawów danych.
Opis reguły
W tablicy wielowymiarowej każdy element w każdym wymiarze ma taki sam, stały rozmiar jak inne elementy w tym wymiarze. W tablicy postrzępionej , która jest tablicą tablic, każda tablica wewnętrzna może mieć inny rozmiar. Używając tylko miejsca potrzebnego dla danej tablicy, żadne miejsce nie jest marnowane. Ta reguła, CA1814, zaleca przełączenie do tablicy postrzępionej w celu zaoszczędzenia pamięci.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, zmień tablicę wielowymiarową na tablicę postrzępionych.
Kiedy pomijać ostrzeżenia
Można pominąć ostrzeżenie z tej reguły, jeśli tablica wielowymiarowa nie traci miejsca.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA1814
// The code that's violating the rule is on this line.
#pragma warning restore CA1814
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA1814.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.
Przykład
W poniższym przykładzie przedstawiono deklaracje dla tablic postrzępionych i wielowymiarowych.
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}
};
}