CA1814: Föredrar ojämna matriser framför flerdimensionella
Property | Värde |
---|---|
Regel-ID | CA1814 |
Title | Föredrar ojämna matriser framför flerdimensionella |
Kategori | Prestanda |
Korrigeringen är icke-bakåtkompatibel | Brott |
Aktiverad som standard i .NET 9 | Nej |
Orsak
En medlem deklareras som en flerdimensionell matris, vilket kan resultera i bortkastat utrymme för vissa datauppsättningar.
Regelbeskrivning
I en flerdimensionell matris har varje element i varje dimension samma fasta storlek som de andra elementen i den dimensionen. I en ojämn matris, som är en matris med matriser, kan varje inre matris ha en annan storlek. Genom att bara använda det utrymme som behövs för en viss matris slösas inget utrymme bort. Den här regeln, CA1814, rekommenderar att du växlar till en ojämn matris för att spara minne.
Så här åtgärdar du överträdelser
Om du vill åtgärda ett brott mot den här regeln ändrar du den flerdimensionella matrisen till en ojämn matris.
När du ska ignorera varningar
Det är okej att ignorera en varning från den här regeln om den flerdimensionella matrisen inte slösar bort utrymme.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA1814
// The code that's violating the rule is on this line.
#pragma warning restore CA1814
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA1814.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel
I följande exempel visas deklarationer för ojämna och flerdimensionella matriser.
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}
};
}