C#.NET’TE DİZİLER
Değişkenlerin nasıl taımlanabileceğini bir önceki makalemizde görmüştük ama birçok durumda değişkenleri tek başına tanımlamamız yetersiz olacaktır örneğin 1000 kişilk bir okuldaki tüm öğrencilere numara verecek olsak 1000 tane değişken tanımlamamız gerekecekti bu hem çok zaman alacaktı hemde çok yorucu olacaktı ve programın performansınıda çok kötü etkileyecekti işte tüm bu sebeplerden dolayı birçok programlaa dilinde olduğu gibi c# dilindede diziler mevcuttur.Dilerseniz şimdide dizi tanımlamayı görelim.
private void button1_Click(object sender,EventArgs e)
{
Double[] dizi; // Burada diziyi tanımlıyoruz
dizi=new Double[10]; // Burada da diziyi boyutlandırıyoruz
}
Burada 10 elemalı bir dizi tanımladık ilk elemanın indis numarası 0 son elemanın indis numarası ise 9 dur.
Yukarıda iki satırda yaptığımız dizi tanımlama işini tek satırda da yapabilirdik
Double[] dizi=new Double[10]; şeklinde.
Dizi Değişkenlerine Varsayılan Değer Atamak
Dizi değişkenleri taımlandığı anda ilk değer atanabilir bununla ilgili örneğimizi yapalım.
private void button1_Click(object sender,EventArgs e)
{
int[] dizi=new int[]{10,20,30};
}
Bu şekilde tanımlanan dizilerde boyut belirtmeye gerek yok eleman sayısı dizinin boyutunu belirtir.
Çok Boyutlu Diziler
Gelişmiş projelerde işimizi çok kolaylaştıracak olan çok boyutlu diziler tanımlama açısından tek boyutlu dizilerden pekte farklı olmamakla beraber biraz daha karmaşıktır.Dizilerin bizi birsürü değişken tanımlamaktan kurtardığı gibi çok boyutlu dizilerde bizi birsürü dizi tanımlamaktan kurtarır.Şimdi bir çok boyutlu dizi tanımlayalım.
private void button1_Click(object sender,EventArgs e)
{
int[,] dizi=new int[2,3]{{1,2,3},{4,5,6}};
}
Yukarıda 2′ye 3′lük bir çok boyutlu dizi tanımladık burada
dizi[1,1]=1;
dizi[2,1]=4;
dizi[1,3]=3; değerlerini verir.
Çok Boyutlu Dizileri Yeniden Boyutlandırmak
C#’da diziler önce tanımlanıp daha sonra eleman sayısı belirlendiği için bu diziler aynı zamanda dinamik dizi olarak ta kullanılabilirler.Ancak yeniden boyutlandırılan bir dizinin önceki değerleri silinir.
private void button1_Click(object sender,EventArgs e)
{
int[,] dizi={{1,2,3},{4,5,6}};
dizi=new int[]{{10,20,30,40},{50,60,70,80}};
}
burada dizinin ilk değerleri silinerek sonradan girilen değerler dizin asıl değerleri oldu C# da dizileri istediğiniz kadar tekrar boyutlandırabilirsiniz.
Not:C#’da istenilen boyutta dizi tanımlanabilir ancak programcıların yazılmamış kanunlarına göre en fazla 5 boyutlu dizi tanımlanır daha fazlası programlar açısından yararından fazla zarar verir.
Şimdide 3 boyutlu bir dizi tanımlayaım ve bir değer atayalım.
private void button1_Click(object sender,EventArgs e)
{
Double[,,] dizi=new int[2,3,5];
dizi[1,2,4]=27;
dizi[2,1,1]=21;
int sonuc=dizi[1,2,4]+dizi[2,1,1]; // sonuç=48 olur
}
Jagged Diziler
Jagged diziler matrix dizlerden farklı olarak bellekten tasarruf etmemizi sağlar ve performansı olumlu yönde etkiler .Örneğin bir isim dizimiz olsun ve bu diziye 5 isim girecek olalım matrix dizi yaptığımızda dizinin boyunu en uzun isme göre belirleyecektik yani Ali Veli Hakan Kemalttin Mustafa isimlerini verecek olalım bu durumda en uzun isim olan Kemalletin’e göre uzunluğu belirleyecektik ve dizimizi şu şekilde tanımlayacaktık
dizi[5,10] diyecektik 5 isim ve en uzun isimin sığacağı 10 karkterlik sütun alanı.Bu durumda şöyle bir problemimiz olacaktı aslında problem sayılmaz ama fazladan bellek kullanmamıza neden olur.Peki ama nasıl ?
A l i _ _ _ _ _ _ _
V e l i _ _ _ _ _ _
H a k a n _ _ _ _ _
K e m a l e t t i n
M u s t a f a _ _ _
İşte tüm bu (_) ler fazladan kullanılan bellekler işte Jagged ile bu fazlalıklardan kurtulacağız.
Jagged dizileri tanımlanırken bazı durumlara dikkat etmemiz gerekiyor örneğin
Satır sayısı belli olacağı için dizi tanımlanırken satır sayısı yani ilk değer kesinlikle verilmeli
private void button1_Click(object sender,EventArgs e)
{
string[][] jagged_dizi=new string[5][];
jagged_dizi[0]=new string[3]; // ilk değer 3 karakter uzunluğunda (Ali)
jagged_dizi[1]=new string[4]; // ikinci değer 4 karakter uzunluğunda (Veli)
}
Dizilerle İlgili İşlemler
a)Dizinin Eleman Sayısını Öğrenmek
Bir dizinin eleman sayısını Length ile öğreniriz.
private void button1_Click(object sender,EventArgs e)
{
int[] dizi=new int[]{10,20,30};
int deger=dizi.Length; // 3 değerini döndürür
}
b)Dizinin Boyutunu Öğrenmek
Bir dizinin boyutunu öğrenmek için Rank kullanılır.
private void button1_Click(object sender,EventArgs e)
{
int[,,] dizi=new int[2,3,4];
int deger=dizi.Rank; // 3 değerini döndürür
}