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
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
}
murtaza
19 Aralık 2009 at 22:49
merhabalar hocam dizilerle ilgili gayet guzel bi anlatım olmus tesekkurler ancak benim bi sorum olacak benim dinamik bir diziye ihtiyacım var ve for dongusu içindeki elemanları her donuste bu diziye eklemek istiyorum nasıl yapabilirim cevaplarsanız sevinirim şimdiden teşekkürler
yuhubaa
20 Aralık 2009 at 08:10
int i;
int[] dizi=new int[20];
for(i=0;i<20;i++)
{
dizi[i]=i;
}
en basit haliyle bu olur sana başka bir yolda anlatayım using system.collection kütüphanesini eklersin
ArrayList yeni = new ArrayList();
yeni.Add(12);
yeni.Add(22);
diyerek te istediğin yerde arrayliste ekleme yapabilirsin
anil
04 Ocak 2010 at 17:05
Süpersiniz.Ama serdar bey ben örneğin 10 tane boyutlu bir diziye kendim tek tek textboxla eklemek istiyorm nası yapcam lütfen yardım edinnn
yuhubaa
05 Ocak 2010 at 03:05
10 boyutlu dan kastın eger bu ise;
int[,] dizim = new int[3,2]; diyerek diziyi tanımlarsın
dizim[0,0]=”serdar”;
dizim[0,1]=”denir”;
şeklinde butonun click olayıyla eklersin yada döngü ile eklersin
anil
05 Ocak 2010 at 09:29
Teşekkür ederim serdar bey peki ben asp deki randomize vardıya hiç aynı sayıyı üsremiyodu asp.nette ney onun kodu ?