C# Diziler (Arrays)

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 veya double).

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.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir