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.


muratbilginer