4 Ocak 2012 Çarşamba

C# ile Diziler

Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# programlama dilinin temel ve güçlü veri yapılarından biri olan dizileri (arrays) yakından inceleyeceğiz. Diziler, aynı türden birden çok veriyi tek bir değişken adı altında saklamamıza olanak tanıyarak, veri koleksiyonlarını yönetmeyi ve işlemeyi oldukça kolaylaştırır. .NET Framework 4 ile C#'ta dizilerin nasıl tanımlandığını, kullanıldığını ve önemli metotlarını gelin birlikte keşfedelim.

Dizi Kavramına Giriş

Temel bir değişken tek bir değeri saklarken, bir dizi birden çok aynı türden değeri sıralı bir şekilde saklar. Diziler, bellek üzerinde ardışık olarak sıralanmış öğelerden oluşur ve her bir öğeye bir indeks numarası (genellikle 0'dan başlayan bir tamsayı) aracılığıyla erişilir. C#'ta bir değişkenin dizi olduğunu belirtmek için, değişken tipinin sonuna köşeli parantezler [] eklenir.

Dizi Tanımlama Yöntemleri

C# .NET Framework 4'te dizileri tanımlamanın çeşitli yolları bulunmaktadır:

Boyut Belirterek Tanımlama

Dizinin kaç öğe içereceği baştan belirtilir. Öğelere henüz değer atanmamıştır.

string[] dizi1 = new string[3]; // 3 elemanlı bir string dizisi tanımlar
int[] sayilar = new int[5];    // 5 elemanlı bir integer dizisi tanımlar
Boyut ve Başlangıç Değerleriyle Tanımlama

Dizinin boyutu belirtilir ve aynı anda öğelerine başlangıç değerleri atanır.

string[] dizi2 = new string[2] { "A", "B" };
int[] rakamlar = new int[4] { 1, 2, 3, 4 };
new Anahtar Kelimesiyle Değer Atayarak Tanımlama

Dizinin boyutu belirtilmeden, doğrudan başlangıç değerleri atanarak dizi oluşturulur. Derleyici, atanan değer sayısına göre dizinin boyutunu otomatik olarak belirler.

string[] dizi3 = new string[] { "A", "B" };
double[] ondaliklar = new double[] { 1.1, 2.2, 3.3 };
Kısa Tanımlama

new anahtar kelimesi ve tür belirtimi olmadan doğrudan değerler atanarak dizi oluşturulabilir.

string[] dizi4 = { "A", "B" };
bool[] durumlar = { true, false, true };

Dizi Öğelerine Erişim ve Değer Atama

Bir dizinin belirli bir konumundaki öğeye erişmek veya o konuma yeni bir değer atamak için indeks numarasını kullanırız. İndeksler 0'dan başladığı için, n elemanlı bir dizinin son elemanının indeksi n-1'dir.

string[] isimler = new string[4];
isimler[0] = "Ahmet";
isimler[1] = "Ayşe";
isimler[2] = "Burak";
isimler[3] = "Can"; // Count 4 ise 3. indekse "Can" eklenir

System.Console.WriteLine(isimler[1]); // Çıktı: Ayşe

Çok Boyutlu Diziler (Matrisler)

C# ayrıca çok boyutlu dizileri de destekler. En yaygın olanı iki boyutlu dizilerdir (matrisler). Çok boyutlu bir dizi tanımlarken, her bir boyutun boyutu virgülle ayrılarak belirtilir.

int[,] matris = { { 1, 2 }, { 3, 4 } }; // 2x2'lik bir matris tanımlar
System.Console.WriteLine(matris[0, 1]); // Çıktı: 2 (0. satır, 1. sütun)

Düzensiz Diziler (Jagged Arrays)

Düzensiz diziler, elemanları da birer dizi olan dizilerdir. Bu alt dizilerin uzunlukları birbirinden farklı olabilir.

int[][] jaggedDizi = new int[][] {
    new int[]{1, 8, 27, 9},
    new int[]{2, 4, 6},
    new int[]{33, 42}
};
System.Console.WriteLine(jaggedDizi[2][1].ToString()); // Çıktı: 42 (3. alt dizinin 2. elemanı)

Dizi Boyutunu Dinamik Olarak Artırma

Dizilerin boyutu tanımlandıktan sonra genellikle sabittir. Ancak, Array.Resize() metodu ile bir dizinin boyutunu dinamik olarak artırabiliriz. Bu metot, orijinal dizinin içeriğini yeni boyuttaki bir diziye kopyalar.

string[] sehirler = { "Ankara", "İstanbul" };
Array.Resize(ref sehirler, sehirler.Length + 1);
sehirler[sehirler.Length - 1] = "İzmir";

Dizi Özellikleri ve Metotları

.NET Framework, dizilerle çalışmayı kolaylaştıran birçok kullanışlı özellik ve metot sunar:

  • Contains(): Bir dizinin belirli bir öğeyi içerip içermediğini kontrol eder (bool değer döndürür).
  • Count() (veya Length özelliği): Dizideki toplam eleman sayısını döndürür (int değer döndürür).
  • Rank: Dizinin boyut sayısını (örneğin, tek boyutlu için 1, iki boyutlu için 2) döndürür (int değer döndürür).
  • Min(): Bir sayısal dizideki en küçük değeri döndürür.
  • Max(): Bir sayısal dizideki en büyük değeri döndürür.
  • Sum(): Bir sayısal dizideki tüm elemanların toplamını döndürür.
  • SetValue(object value, int index) (veya çok boyutlu diziler için SetValue(object value, int index1, int index2, ...)): Belirtilen indeksteki öğeye bir değer atar.
  • CopyTo(Array array, int startIndex): Dizinin tüm öğelerini belirtilen başlangıç indeksinden itibaren başka bir diziye kopyalar. Hedef dizinin yeterli boyutta olması gerekir.
  • Clone(): Dizinin sığ bir kopyasını (shallow copy) oluşturur.
Array Sınıfının Önemli Metotları
  • Array.Clear(Array array, int index, int length): Belirtilen dizinin belirli bir aralığındaki öğeleri varsayılan değerlerine (sayısal tipler için 0, referans tipler için null vb.) ayarlar.
  • Array.Copy(Array sourceArray, Array destinationArray, int length): Kaynak dizinin belirtilen sayıda öğesini hedef diziye kopyalar. Hedef dizinin yeterli boyutta olması gerekir.
  • Array.IndexOf(Array array, object value, int startIndex, int count): Belirtilen değerin dizideki ilk görüldüğü indeksi döndürür (belirtilen aralıkta arama yapar). Bulunamazsa -1 döndürür.
  • Array.LastIndexOf(Array array, object value): Belirtilen değerin dizideki son görüldüğü indeksi döndürür. Bulunamazsa -1 döndürür.
  • Array.Reverse(Array array): Dizinin öğelerini ters sırada sıralar.
  • Array.Resize<T>(ref T[] array, int newSize): Bir dizinin boyutunu yeniden boyutlandırır (generic bir metottur).
  • Array.Sort(Array array, int startIndex, int length): Dizinin belirtilen aralığındaki öğelerini sıralar.

Dizilerde Döngüler: foreach Kullanımı

Dizi öğelerini tek tek işlemek için döngüler sıklıkla kullanılır. Özellikle foreach döngüsü, bir dizinin tüm öğelerini kolayca ve güvenli bir şekilde yinelemek için idealdir.

string[] renkler = { "Kırmızı", "Mavi", "Yeşil" };
foreach (string renk in renkler)
{
    System.Console.WriteLine(renk);
}
---

Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 ile dizilerin temel kavramlarını, tanımlama yöntemlerini, önemli özelliklerini ve metotlarını detaylı bir şekilde inceledik. Diziler, programlarımızda birden çok veriyi düzenli bir şekilde saklamak ve bu veriler üzerinde etkili işlemler yapmak için bize güçlü araçlar sunar. Umarım bu rehber, dizilerin mantığını anlamanıza ve kodlarınızda verimli bir şekilde kullanmanıza yardımcı olur. Bir sonraki yazımda, C# dilinin diğer önemli yapı taşlarını keşfetmeye devam edeceğiz. Webkolog.net'i takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

0 yorum:

Yorum Gönder