Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

C# Dizi ve List Farkı Nedir? Hangisi Ne Zaman Kullanılır?

csharp-dizi-ve-list-farki-nedir-hangisi-ne-zaman-kullanilir
Bu yazıda neler var?
  1. Dizi ile List<T> arasındaki temel fark nedir?
  2. Diziyle öğrenci notları nasıl tutulur?
  3. List<int> ile notlar nasıl eklenir ve silinir?
  4. Dizi mi List<T> mi? Dört ölçütlü seçim kontrol listesi

C# dizi ve List farkı, temel olarak eleman sayısının nasıl yönetildiğiyle ilgilidir. Dizi oluşturulduktan sonra uzunluğu sabit kalır, ancak mevcut elemanların değerleri değiştirilebilir. List<T> ise eleman ekleme ve silme ihtiyacının bulunduğu durumlarda kullanılabilen, eleman sayısı değişebilen bir koleksiyondur.

Her iki yapıda da elemanlara sıfırdan başlayan indekslerle erişilir. Seçim yaparken eleman sayısının sabit olup olmadığını, sonradan ekleme veya silme gerekip gerekmediğini ve eleman sayısını hangi özellikle takip edeceğini değerlendirebilirsin.

Dizi ile List<T> arasındaki temel fark nedir?

Dizi ile List<T> arasındaki temel fark nedir?

Dizi, aynı türden birden fazla değeri belirli bir uzunlukta tutar. Dizi oluşturulurken uzunluğu belirlenir ve mevcut dizi nesnesinin eleman sayısı sonradan değiştirilemez. Örneğin dört elemanlı bir int dizisinin geçerli indeksleri 0, 1, 2 ve 3 olur.

Dizinin uzunluğu sabittir, eleman değerleri değişebilir

Dizinin uzunluğunun sabit olması, içindeki değerlerin değiştirilemeyeceği anlamına gelmez. notlar[1] ifadesiyle ikinci elemana erişebilir ve bu elemana yeni bir değer atayabilirsin. Ancak diziye doğrudan yeni bir beşinci eleman ekleyemezsin. Dizinin toplam eleman sayısını öğrenmek için Length özelliği kullanılır. Tek boyutlu bir dizide Length, dizideki eleman sayısını verir.

List<T> ile eleman sayısı değiştirilebilir

List<T>, türü T ile belirtilen değerleri tutar. Örneğin List<int> yalnızca tam sayılarla çalışır. Listeye Add ile yeni eleman ekleyebilir, Remove ile bir elemanı kaldırabilirsin. Listede belirli bir konumdaki değere diziye benzer biçimde indeksle erişilir. Listenin o anda kaç eleman içerdiğini öğrenmek için Count özelliği kullanılır.

Aşağıdaki örnekte her iki yapıda da indeksle değer değiştirme gösteriliyor. Dizi sabit uzunluğunu korurken listeye bir eleman ekleniyor ve başka bir eleman siliniyor.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        int[] dizi = { 10, 20, 30 };
        List<int> liste = new List<int> { 10, 20, 30 };

        dizi[1] = 25;
        liste[1] = 25;

        liste.Add(40);
        liste.Remove(10);

        Console.WriteLine($"Dizi[1]: {dizi[1]}");
        Console.WriteLine($"Dizi Length: {dizi.Length}");
        Console.WriteLine($"Liste[1]: {liste[1]}");
        Console.WriteLine($"Liste Count: {liste.Count}");
    }
}

Beklenen çıktı:

Dizi[1]: 25
Dizi Length: 3
Liste[1]: 25
Liste Count: 3

Bu örnekte listenin eleman sayısı önce Add ile artmış, ardından Remove ile azalmıştır. Dizide ise yalnızca ikinci elemanın değeri değiştirilmiş ve Length değeri 3 olarak kalmıştır. Bu nedenle eleman sayısı baştan belli ve sabit olacaksa dizi, elemanların zaman içinde eklenip silinmesi gerekiyorsa List<T> daha doğrudan bir seçim olabilir.

Diziyle öğrenci notları nasıl tutulur?

Öğrenci notlarını bir dizide tutmak için int[] türünde bir değişken oluşturabilirsin. Aşağıdaki örnekte dört not saklanıyor, ikinci nota indeksle erişiliyor ve toplam not sayısı Length ile yazdırılıyor.

using System;

class Program
{
    static void Main()
    {
        int[] notlar = { 72, 85, 90, 68 };

        notlar[1] = 88;

        Console.WriteLine($"İkinci not: {notlar[1]}");
        Console.WriteLine($"Not sayısı: {notlar.Length}");
    }
}

Beklenen çıktı:

İkinci not: 88
Not sayısı: 4

notlar[1] ifadesi dizinin ikinci elemanını gösterir çünkü C# dizilerinde indeksleme sıfırdan başlar. Örnekte ikinci notun değeri 85'ten 88'e güncellenmiştir, fakat dizinin uzunluğu değişmemiştir. Yani sabit uzunluk, not değerlerini düzenlemeye engel değildir; yalnızca dizideki eleman sayısının değiştirilmesini sınırlar.

List<int> ile notlar nasıl eklenir ve silinir?

List<int> ile notlar nasıl eklenir ve silinir?

Öğrenci notlarının sayısı değişebilecekse List<int> kullanılabilir. Boş bir liste oluşturup Add ile notları sırayla eklersin. Remove ise konuma göre değil, verdiğin değerin listedeki ilk eşleşmesine göre silme yapar. Count mevcut not sayısını verir; köşeli ayraçla belirli bir konumdaki nota erişirsin. Bu işlemler Microsoft’un List<T> başvurusunda da açıklanır.

Aşağıdaki kod, önceki dizi örneğinden bağımsız olarak çalışır:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> notlar = new List<int>();
        notlar.Add(70);
        notlar.Add(85);
        notlar.Add(90);

        Console.WriteLine($"Ekleme sonrası: {notlar.Count} not");

        bool silindi = notlar.Remove(85);
        Console.WriteLine($"85 silindi mi? {silindi}");
        Console.WriteLine($"Silme sonrası: {notlar.Count} not");
        Console.WriteLine($"İkinci not: {notlar[1]}");
    }
}

Beklenen çıktı:

Ekleme sonrası: 3 not
85 silindi mi? True
Silme sonrası: 2 not
İkinci not: 90

Üç Add çağrısı 70, 85 ve 90 değerlerini eklediği için ilk Count sonucu 3’tür. Remove(85) örnekteki 85 değerini siler ve işlem başarılı olduğu için True döner. Geriye iki not kalır; indeksler sıfırdan başladığından notlar[1] artık 90 değerini gösterir. Aynı değer birden fazla kez bulunsaydı Remove yalnız ilk eşleşmeyi silerdi.

Dizi mi List<T> mi? Dört ölçütlü seçim kontrol listesi

“Eleman sayısı değişecekse List<T>, sabit kalacaksa dizi değerlendirilebilir.” Bu iyi bir başlangıç kuralıdır: Dizinin uzunluğu oluşturulduktan sonra değişmez, ancak mevcut konumlardaki notlar güncellenebilir.

  1. Not sayısı: Kayıtlara yeni notlar eklenecek veya notlar silinecekse listeyi değerlendir. Tutulacak not sayısı baştan belliyse dizi de uygun olabilir.
  2. Performans beklentisi: Birini ölçmeden daha hızlı ilan etme. Notların ne sıklıkla eklendiğine, silindiğine veya konumuyla okunduğuna bak; performans önemliyse kendi kullanım senaryonu ölç.
  3. API uyumu: Notları aktaracağın metodun hangi türü beklediğini kontrol et. Dizi bekleyen bir metotla çalışırken liste seçmenin doğuracağı dönüşüm ihtiyacını, liste bekleyen bir metotta da dizi kullanmanın etkisini hesaba kat.
  4. Okunabilirlik: Not ekleme ve silme kodun temel işiyse Add ile Remove bu niyeti açık gösterir. Sabit sayıdaki notu konumlarına göre işleyeceksen dizi daha anlaşılır gelebilir.

C# temellerini gözden geçirirken C# bilgi testini kullanabilirsin. Veri yapısı seçimini ise test sonucuna değil, notları nasıl kullanacağına dayandır.

İyi seçim, not sayısının nasıl değiştiğini ve kodun ne yapması gerektiğini açıkça karşılayan seçimdir.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara