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()
(veyaLength
ö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çinSetValue(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çinnull
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