CA1814: Basit dizileri çok boyutlu dizilere tercih edin
Özellik | Değer |
---|---|
Kural Kimliği | CA1814 |
Başlık | Çok boyutlu diziler yerine basit dizileri tercih edin |
Kategori | Performans |
Hataya neden olan veya bozulmayan düzeltme | Yeni |
.NET 9'da varsayılan olarak etkin | Hayır |
Neden
Üye çok boyutlu bir dizi olarak bildirilir ve bu da bazı veri kümeleri için alanın boşa harcanmasıyla sonuçlanabilir.
Kural açıklaması
Çok boyutlu bir dizide, her boyuttaki her öğenin boyutu, bu boyuttaki diğer öğelerle aynı, sabit boyuta sahiptir. Bir dizi dizisi olan pürüzlü bir dizide, her iç dizi farklı boyutta olabilir. Yalnızca belirli bir dizi için gereken alanı kullanarak boş alan harcanmaz. Ca1814 adlı bu kural, belleği korumak için pürüzlü bir diziye geçmenizi önerir.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için çok boyutlu diziyi pürüzlü bir dizi olarak değiştirin.
Uyarıların ne zaman bastırılması gerekiyor?
Çok boyutlu dizi alan israf etmiyorsa, bu kuraldan gelen bir uyarıyı gizlemenin bir sakıncası yoktur.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA1814
// The code that's violating the rule is on this line.
#pragma warning restore CA1814
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1814.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Örnek
Aşağıdaki örnek, pürüzlü ve çok boyutlu diziler için bildirimleri gösterir.
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}
};
}