Nilai ujian satu kelas sering direkam dalam bentuk tabel: setiap baris mewakili siswa, setiap kolom mewakili mata pelajaran. Array satu dimensi tidak sanggup memodelkan dua arah tersebut secara langsung. Array multidimensi menyediakan struktur baris dan kolom dalam satu objek, sehingga posisi data cukup dinyatakan dengan sepasang indeks.

Struktur Array Dua Dimensi #

Deklarasi array dua dimensi memakai satu koma di dalam kurung siku, misalnya int[,]. Inisialisasinya ditulis bertingkat: kurung luar memuat baris, kurung dalam memuat kolom. Properti Rank melaporkan jumlah dimensi, sedangkan method GetLength(dimensi) melaporkan ukuran tiap dimensi.

csharp
int[,] nilaiKelas =
{
    { 80, 75, 90 },
    { 85, 70, 95 }
};

Console.WriteLine(nilaiKelas.Rank);
Console.WriteLine(nilaiKelas.GetLength(0));
Console.WriteLine(nilaiKelas.GetLength(1));
Console.WriteLine(nilaiKelas.Length);
Console.WriteLine(nilaiKelas[1, 2]);

Output yang Dihasilkan:

text
2
2
3
6
95

Mari kita telaah baris demi baris:

  1. Baris 1-4: Array nilaiKelas dibuat berukuran 2 baris dan 3 kolom; tanda koma pada int[,] menandai array dua dimensi.
  2. Baris 6 (nilaiKelas.Rank): Rank melaporkan jumlah dimensi, yaitu 2.
  3. Baris 7-8 (GetLength(0) dan GetLength(1)): Dimensi 0 adalah baris (2 elemen), dimensi 1 adalah kolom (3 elemen).
  4. Baris 9 (nilaiKelas.Length): Length menghitung seluruh sel, yaitu 2 x 3 = 6.
  5. Baris 10 (nilaiKelas[1, 2]): Indeks dipisah koma; baris 1 kolom 2 memuat nilai 95.

Menelusuri Baris dan Kolom #

Foreach menelusuri array multidimensi dalam urutan baris: seluruh baris pertama terlebih dahulu, lalu baris berikutnya. Bila posisi baris dan kolom dibutuhkan, gunakan dua for loop bersarang.

csharp
foreach (int nilai in nilaiKelas)
{
    Console.Write($"{nilai} ");
}
Console.WriteLine();

for (int baris = 0; baris < nilaiKelas.GetLength(0); baris++)
{
    int jumlahBaris = 0;
    for (int kolom = 0; kolom < nilaiKelas.GetLength(1); kolom++)
    {
        jumlahBaris += nilaiKelas[baris, kolom];
    }
    Console.WriteLine($"Jumlah baris {baris}: {jumlahBaris}");
}

Output yang Dihasilkan:

text
80 75 90 85 70 95 
Jumlah baris 0: 245
Jumlah baris 1: 250

Foreach mencetak keenam nilai secara berurutan tanpa mengetahui batas baris dan kolom; bagi foreach, array multidimensi hanyalah rangkaian sel yang dilewati dari awal ke akhir. Loop luar menjalankan jumlahBaris baru untuk tiap baris, dan loop dalam menjumlahkan seluruh kolom pada baris tersebut: 80 + 75 + 90 menghasilkan 245, lalu 85 + 70 + 95 menghasilkan 250. Perhatikan pula bahwa Console.Write mencetak tanpa pindah baris, sehingga keenam nilai tampil dalam satu deret.

Array Lebih dari Dua Dimensi #

C# tidak membatasi jumlah dimensi pada satu koma saja. Array tiga dimensi ditulis int[,,], misalnya data penjualan per cabang, per hari, dan per jam. Cara mengaksesnya tetap sama: tiga indeks dipisah koma seperti data[1, 2, 0], dan Rank melaporkan angka 3 untuk struktur tersebut.

Kebutuhan seperti itu jarang muncul di program sehari-hari, dan bila muncul, struktur data yang lebih ekspresif biasanya lebih mudah dibaca. Untuk baris yang panjangnya tidak seragam, array jagged pada bab berikutnya memberikan fleksibilitas yang tidak dimiliki array multidimensi.