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 = newstring[3]; // 3 elemanlı bir string dizisi tanımlarint[] sayilar = newint[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 = newstring[2] { "A", "B"}; int[] rakamlar = newint[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 = newstring[] { "A", "B"}; double[] ondaliklar = newdouble[] { 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 = newstring[4];
isimler[0] = "Ahmet";
isimler[1] = "Ayşe";
isimler[2] = "Burak";
isimler[3] = "Can"; // Count 4 ise 3. indekse "Can" eklenirSystem.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ımlarSystem.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 = newint[][] {
newint[]{1, 8, 27, 9},
newint[]{2, 4, 6},
newint[]{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(refsehirler, 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(stringrenk inrenkler)
{
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, programlama dilinin temel kontrol yapı taşlarından biri olan döngüleri (loops) derinlemesine inceleyeceğiz.
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder