Aracılığıyla paylaş


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 8'de 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 noneolarak 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}
                            };
}