CA1814: Lebih baik gunakan array berjajar daripada multidimensi
Properti | Nilai |
---|---|
ID Aturan | CA1814 |
Judul | Utamakan array berjatuh daripada multidimensi |
Golongan | Performa |
Perbaikan bersifat disruptif atau non-disruptif | Merusak |
Diaktifkan secara default di .NET 9 | No |
Penyebab
Anggota dinyatakan sebagai array multidirektori, yang dapat mengakibatkan ruang terbuang untuk beberapa himpunan data.
Deskripsi aturan
Dalam array multidireksional, setiap elemen di setiap dimensi memiliki ukuran tetap yang sama dengan elemen lain dalam dimensi tersebut. Dalam array berjatahan, yang merupakan array array, setiap array dalam dapat memiliki ukuran yang berbeda. Dengan hanya menggunakan ruang yang diperlukan untuk array tertentu, tidak ada ruang yang terbuang-. Aturan ini, CA1814, merekomendasikan untuk beralih ke array berjatahan untuk menghemat memori.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran aturan ini, ubah array multididensi menjadi array berjatuhan.
Kapan harus menekan peringatan
Tidak apa-apa untuk menekan peringatan dari aturan ini jika array multididensi tidak membuang-buang ruang.
Menyembunyikan peringatan
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.
#pragma warning disable CA1814
// The code that's violating the rule is on this line.
#pragma warning restore CA1814
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1814.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.
Contoh
Contoh berikut menunjukkan deklarasi untuk array jagged dan multididensi.
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}
};
}