DIZI-ARRAYLIST-LIST KARŞILAŞTIRMASI

 

1. Veri Türü

  • Dizi (Array):

    • Sabit bir türdeki (örneğin int, string) elemanları saklar.
    • Tür güvenliği sağlar; bir dizi tanımlandığında içindeki elemanlar yalnızca o türde olabilir.
    • Örnek:
      int[] numbers = new int[5]; numbers[0] = 10; // Geçerli // numbers[1] = "Hello"; // HATA: Tür uyuşmazlığı
  • ArrayList:

    • Türden bağımsız elemanları saklar (object türünde veri tutar).
    • Farklı türde elemanlar eklenebilir, ancak tür dönüşümü yapmak gerekebilir.
    • Örnek:
      ArrayList list = new ArrayList(); list.Add(10); // Geçerli list.Add("Hello"); // Geçerli

2. Performans

  • Dizi (Array):

    • Tür güvenliği nedeniyle daha hızlıdır.
    • Derleme sırasında tür kontrolü yapılır, bu da çalışma zamanında ek tür kontrolü maliyetini ortadan kaldırır.
  • ArrayList:

    • Tür dönüşümü (boxing/unboxing) nedeniyle performans kaybı yaşanabilir.
    • Daha fazla bellek tüketebilir.

3. Boyut

  • Dizi (Array):

    • Sabit boyutludur. Tanımlandıktan sonra boyut değiştirilemez.
    • Örnek:
      int[] numbers = new int[3]; // Daha fazla eleman eklenemez.
  • ArrayList:

    • Dinamik boyutludur. İhtiyaca göre büyür veya küçülür.
    • Örnek:
      ArrayList list = new ArrayList(); list.Add(1); // Liste büyür. list.Add(2);

4. Kullanım Amacı

  • Dizi (Array):

    • Belirli bir türde sabit bir boyutla çalışmanız gerektiğinde tercih edilir.
    • Daha iyi performans sağlar.
  • ArrayList:

    • Türden bağımsız veya boyutun önceden bilinmediği durumlarda tercih edilir.
    • Esneklik sağlar.

5. Alternatifler

  • Günümüzde ArrayList yerine genellikle List<T> kullanılır. Çünkü:
    • List<T>, tür güvenliği sağlar.
    • ArrayList eski bir veri yapısıdır (C# 2.0 ve öncesi).

Örnek:

List<int> numbers = new List<int>(); numbers.Add(10); numbers.Add(20); // numbers.Add("Hello"); // HATA: Tür uyuşmazlığı



1. List ve ArrayList Metotlarının Farkları

  • List<T>:

    • Generic olduğu için belirli bir türle çalışır (T).
    • Tür güvenliği sağlar.
    • LINQ sorgularını destekler.
    • Daha performanslıdır, çünkü tür dönüşümleri yapılmaz.
    • Örnek metotlar: Add(), Remove(), Contains(), Sort(), Find().
  • ArrayList:

    • Tür bağımsız çalışır, ancak her eleman object olarak saklanır.
    • Tür dönüşümleri (boxing/unboxing) gerekebilir.
    • Eski bir veri yapısıdır, güncel projelerde önerilmez.
    • Örnek metotlar: Add(), Remove(), Contains(), Sort().
List<object> mixedList = new List<object>(); mixedList.Add(10); // int mixedList.Add("Hello"); // string mixedList.Add(3.14); // double
// Elemanları okurken tür dönüşümü gerekebilir: int number = (int)mixedList[0]; string text = (string)mixedList[1];
SONUÇ OLARAK
  • Eğer tür karışıklığı istemiyorsanız, List<T> kullanın ve T ile bir tür belirtin (List<int> gibi).
  • Eğer farklı türleri saklamak istiyorsanız, List<object> kullanabilirsiniz.
  • Modern C# projelerinde ArrayList yerine List<T> veya List<object> tercih edilmelidir.
  • Yorumlar

    Bu blogdaki popüler yayınlar

    14 - Dizi Oluşturma, Değer Atama

    12 - Bir Boyutlu Diziler - Çalışma Soruları

    27 - Koleksiyonlar: ArrayList()