C# Eğitimlerimize Dizilerin 7. konusu ile devam ediyoruz.
Bu yazımda N boyutlu dizilerden bahsedeceğiz.
Bir önceki dersimizde 2 boyutlu dizi tanımlamayı görmüştük. C# da dizi tanımlaması sadece bunlarla sınırlı değil N boyutlu diyebileceğimiz istediğimiz boyutta diziler tanımlayabilmekteyiz.
Ben burada sizlere 3 boyutlu bir örnek göstereceğim diğerleri bunun türevleri şeklinde devam eder.
3 Boyutlu Dizi Tanımlama
int[, ,] Sayılar = new int[1,2,3];
C# da dizilerde her boyut bir eksiği virgül ile belirtilir.
int[, , ] buradaki 2 virgülün anlamı dizinin 3 boyutlu olduğunu söyler. Eğer 4 boyutlu bir dizi oluşturmak isteseydik 3 virgül koymamız gerekecekti.
Devamında kullandığımız int[1,2,3] burada 1 satır sayısını 2 sütun sayısını 3 de derinliğini ifade eder.
Diziye Değer Atama
int[, ,] Sayılarx = new int[1, 2, 3] { { { 1, 2, 3 }, { 3, 4, 5 } } };
Çalışma Anında Atama
int[,,] Sayılarx = new int[1, 2, 3] { { { 1, 2, 3 }, { 3, 4, 5 } } }; Sayılarx[0, 0, 0] = 1; Sayılarx[0, 0, 1] = 2; Sayılarx[0, 0, 2] = 3; Sayılarx[0, 1, 0] = 3; Sayılarx[0, 1, 1] = 4; Sayılarx[0, 1, 2] = 5;
İlk tanımlamanın açılmış halini de böylece görmüş olduk.
Böyle bir dizinin eleman sayısı Satır* Sütun* Derinlik olarak bulunabilir. Yani 1*2*3 =6 elemanlı olacağını buradan çıkarabiliriz.
Dizi Elemanlarına Ulaşma
N boyutlu bir dizinin elemanlarına iç içe kurulacak N tane for döngüsü ile ulaşılabilir.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Çok_Boyutlu_Diziler { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int[,,] Sayılarx = new int[1, 2, 3] { { { 1, 2, 3 }, { 3, 4, 5 } } }; Sayılarx[0, 0, 0] = 1; Sayılarx[0, 0, 1] = 2; Sayılarx[0, 0, 2] = 3; Sayılarx[0, 1, 0] = 3; Sayılarx[0, 1, 1] = 4; Sayılarx[0, 1, 2] = 5; for (int i = 0; i < Sayılarx.GetLength(0); i++) { for (int j = 0; j < Sayılarx.GetLength(1); j++) { for (int k = 0; k < Sayılarx.GetLength(2); k++) { listBox1.Items.Add(Sayılarx[i, j, k]); } } } } } }
GetLength özelliğini bir önceki yazımda anlatmıştım. 3. gelen boyut GetLength(2) ifadesiyle erişilebilir olmuştur. Bize uzunluğunu dönecektir.
Çok boyutlu dizilerde bu şekildeydi. Bunu böyle 4, 5, 6, … ,n boyuta uyarlamak sizin elinizdedir. Ancak boyut arttıkça olayı anlama ve erişimi sağlamada doğal olarak zorlaşacaktır. Dikkatli olmanızda fayda görüyorum.
Bir sonraki dersimde görüşmek üzere.