C# dilinde diziler, aynı veri tipindeki birden fazla değeri tek bir veri yapısı içinde saklamamıza olanak tanır. Diziler sabit bir boyuta sahiptir ve indeksleme ile elemanlarına erişilir.
Bu yazıda C# dizilerinin özelliklerini, kullanım alanlarını ve detaylı örneklerini ele alacağız.
1. C# Dizilerinin Temel Özellikleri
- Sabit Boyutlu: Diziler tanımlandığında boyutları belirlenir ve bu boyut değiştirilemez.
- Sıralı Yapı: Elemanlara sıralı bir şekilde, 0‘dan başlayarak indekslerle erişilir.
- Tek Tip Veri: Bir dizi yalnızca bir veri türünü depolar (örneğin,
int
,string
veyadouble
).
2. C# Dizilerin Tanımlanması ve Kullanımı
a. Tek Boyutlu Dizi Tanımlama
// 1. Dizi tanımlama ve eleman atama
int[] sayilar = new int[5];
sayilar[0] = 10;
sayilar[1] = 20;
sayilar[2] = 30;
sayilar[3] = 40;
sayilar[4] = 50;
// 2. Dizi tanımlama ve elemanlarla başlatma
int[] yaslar = { 25, 30, 35, 40, 45 };
b. Çok Boyutlu Dizi Tanımlama
Çok boyutlu diziler matris veya tablo gibi yapılarda veri saklamak için kullanılır.
// 2x3 boyutlu bir matris tanımlama
int[,] matris = new int[2, 3]
{
{ 1, 2, 3 },
{ 4, 5, 6 }
};
// Elemanlara erişim
Console.WriteLine(matris[0, 0]); // Çıktı: 1
Console.WriteLine(matris[1, 2]); // Çıktı: 6
c. Karışık Boyutlu (Jagged) Diziler
Karışık boyutlu diziler, farklı sayıda eleman içeren dizi kümeleridir.
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[] { 1, 2, 3 };
jaggedArray[1] = new int[] { 4, 5 };
jaggedArray[2] = new int[] { 6, 7, 8, 9 };
// Elemanlara erişim
Console.WriteLine(jaggedArray[1][1]); // Çıktı: 5
3. Dizi Elemanlarına Erişim
Döngü Kullanarak Elemanları Listeleme
int[] sayilar = { 10, 20, 30, 40, 50 };
// for döngüsü ile
for (int i = 0; i < sayilar.Length; i++)
{
Console.WriteLine($"Index {i}: {sayilar[i]}");
}
// foreach döngüsü ile
foreach (int sayi in sayilar)
{
Console.WriteLine($"Sayı: {sayi}");
}
Çıktı:
Index 0: 10
Index 1: 20
Index 2: 30
Index 3: 40
Index 4: 50
4. Diziye Yeni Eleman Eklemek
Diziler sabit boyutlu oldukları için doğrudan yeni eleman eklenemez. Bunun yerine, mevcut elemanlarla yeni bir dizi oluşturabilirsiniz.
Alternatif olarak, eleman sayısının dinamik olduğu durumlarda List<T>
kullanılabilir.
Örnek: Dizi Boyutunu Artırma
int[] eskiDizi = { 1, 2, 3 };
int[] yeniDizi = new int[4];
for (int i = 0; i < eskiDizi.Length; i++)
{
yeniDizi[i] = eskiDizi[i];
}
yeniDizi[3] = 4; // Yeni eleman eklendi
5. Sık Kullanılan Dizi Metotları
Array.Sort()
Diziyi sıralar.
int[] sayilar = { 30, 10, 50, 20 };
Array.Sort(sayilar); // {10, 20, 30, 50}
Array.Reverse()
Diziyi ters çevirir.
Array.Reverse(sayilar); // {50, 30, 20, 10}
Array.IndexOf()
Bir elemanın dizideki indeksini döner.
int indeks = Array.IndexOf(sayilar, 30); // Çıktı: 1
Array.Clear()
Dizinin belirli bir kısmını temizler (varsayılan değerlere sıfırlar).
Array.Clear(sayilar, 0, 2); // İlk iki elemanı temizler
6. Çok Boyutlu Dizi Kullanımına Örnek
Örnek: Bir Matrisin Elemanlarını Yazdırma
int[,] matris =
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
for (int i = 0; i < matris.GetLength(0); i++) // Satır
{
for (int j = 0; j < matris.GetLength(1); j++) // Sütun
{
Console.Write($"{matris[i, j]} ");
}
Console.WriteLine();
}
Çıktı:
1 2 3
4 5 6
7 8 9
7. Dizi İle İlgili Hata Kontrolleri
- IndexOutOfRangeException: Geçersiz bir dizin kullanıldığında oluşur.
int[] sayilar = { 10, 20, 30 };
Console.WriteLine(sayilar[3]); // Hata: IndexOutOfRangeException
- NullReferenceException: Tanımlanmamış bir diziye erişim yapılırsa oluşur.