Diziler aynı tipte değerlerin bir arada taşınmasını sağlayan referans tipli programlama öğeleridir. Dizilerin en önemli özelliği elamanlarını ismiyle değil indeks sırasıyla erişim sağlamsıdır. Dizilerin index numarası 0 dan başlayıp tanımlayacağınız dizi tipine göre devam eder. Örneğin tip olarak byte kullanırsak 0 ile 250 arasında bir index oluşacaktır. Yani 251 adet değer taşıyabilir duruma gelecektir. Diziler referans tipli olmalarından dolayı belleğin heap kısmında tutulurlar. Ama diziye erişim için oluşturulan değişken ise belleğin stack bölgesinde tutulur.
Kısaca, diziler, sabit boyutlu ve indekslenmiş bir veri yapısıdır, yani elemanlar belirli bir sıraya göre numaralandırılır ve bu numaralara göre erişilebilirler.
C# dilinde dizi tanımlamak için şu sözdizimi kullanılır:
veriTipi[] diziAdi = new veriTipi[diziBoyutu];
Burada:
veriTipi
, dizide saklanacak öğelerin veri tipini temsil eder.diziAdi
, oluşturulacak dizinin adını belirtir.diziBoyutu
, dizinin kaç öğe içereceğini belirten bir tam sayı değeridir.Dizi tanımlamaları değişken tanımlamayla aynıdır. Yalnızca değişken değilde dizi olduğunu belirtmek için tip adının ardından köşeli parantez kullanırız.
int[] sayılarım;
Dizilerin referans tipli olduğunu daha önce söylemiştik. Yani belleğin ‘stack’ bölgesindeki dizi değişkeni, belleğin ‘heap’ bölgesindeki bir dizi örneğinin adresini tutup işaret edecek demektir. Bu nedenle ‘heap’ bölgesinde veriler için yer ayrılması, referans tipli değişkenlerin ‘new’ anahtar kelimesi ile oluşturulmaları ile gerçekleşir. Dizilerde bu kural doğrlutusunda oluşturulur.
Bir diğer nokta ise, dizi değişkenini tanımlarken dizinin bellekte kaç tane eleman saklayacağı bilgisini vermezken, verileri belleğe çıkardığımız yer olan ‘new’ anahtar kelimesi ile oluşturulduklarında bu bilgiyi vermek zorundayız. Yani dizi oluştururken kaç elemanlı olduklarını söylemek zorundayız.
int[] sayılarım = new int[4];
Burada önemli olan nokta elaman sayısından ziyade kaçtane eleman olduğunu vurgulamaktır bu nedenle farklı şekillerde de dizi oluşturabiliriz.
Örneğin aşağıdaki örneği inceleyecek olursak dizi elemanlarını direk tanımladığımız için dizi eleman sayısını tekrardan yazmamıza gerek yoktur. Çünkü derleyici başlangıç değerlerinin sayısından dizinin eleman sayısını otomatik hesaplar.
int[] sayılarım2 = new int[] { 1, 2, 3, 4 };
//Tabikide iki şekilde tanımalayabiliriz bunda bir fark yoktur.
int[] sayılarım2 = new int[4] { 1, 2, 3, 4 };
Ayrıca bu tip bir tanımlama gerçekleştirdiğimiz taktirde yani eleman değerleri ile birlikte dizi oluşturduğumuzda new anahter kelimesini kullanmanızada gerek kalmaz.
int[] sayılarım2 = { 1, 2, 3, 4 };
Başta söylediğim gibi dizi elemanlarına indeksleri üzerinden erişlebilir ve indeks numarası sıfırdan başlar. Şimdi aşağıda string tipinde bir şehirler değişkeni oluşturalım ve veriye erişmeye çalışalım.
string[] sehirler = { "Istanbul", "Ankara", "Izmir", "Rize" };
string sehir = sehirler[0];
Console.WriteLine(sehir);
Tüm diziyi getirme ve eleman sayısını öğrenme.
string[] sehirler = { "Istanbul", "Ankara", "Izmir", "Rize" };
for (int i = 0; i < sehirler.Length; i++)
{
Console.WriteLine(sehirler[i]);
}
Dizinin değerini değiştirme.
string[] sehirler = { "Istanbul", "Ankara", "Izmir", "Rize" };
sehirler[0] = "Edirne";
Console.WriteLine(sehirler[0]);