Örneklerle C# ArrayList Eğitimi

⚡ Akıllı Özet

C#'da ArrayList, System.Collections ad alanından gelen ve öğeleri nesne olarak depolayan dinamik bir koleksiyondur. Bir dizinin aksine, çalışma zamanında büyür ve küçülür ve tek bir listede tamsayıları, dizeleri ve Boolean değerlerini birlikte tutabilir.

  • 🔄 Dinamik boyutlandırma: ArrayList, öğeleri çalışma zamanında ekler ve kaldırır; bu nedenle, bir dizide olduğu gibi öğe sayısını önceden sabitlemenize gerek yoktur.
  • ???? Nesne depolama: Her öğe bir nesne olarak saklanır; bu da bir ArrayList'in int, string ve bool gibi farklı veri türlerini bir arada tutmasına olanak tanır.
  • ➕ Temel yöntemler: Add, Insert, Remove, RemoveAt, Contains ve Sort fonksiyonları, ArrayList üzerinde günlük olarak gerçekleştirilen işlemleri kapsar.
  • 📊 Adet ve Kapasite: `Count` özelliği mevcut öğe sayısını, `Capacity` ise ayrılan depolama alanını döndürür.
  • ✅ Modern tercih: Microsoft Derleme zamanı tür güvenliği sağladığı ve kutulama işleminden kaçındığı için yeni kodlar için genel Listeyi önerir.
  • 🤖 Yapay zeka yardımı: GitHub Copilot, ArrayList kodunun iskeletini oluşturur ve ML.NET işlem hatları, verileri C# koleksiyon türleri aracılığıyla iletir.

C# ArrayList

C#'ta ArrayList nedir?

ArrayList koleksiyonu şuna benzer: Diziler C#'ta veri türü. En büyük fark, dizi listesi koleksiyonunun dinamik yapısıdır.

Diziler için, dizi bildirimi sırasında dizinin tutabileceği öğe sayısını tanımlamanız gerekir. Ancak Dizi Listesi koleksiyonu söz konusu olduğunda bunun önceden yapılmasına gerek yoktur. Öğeler Array List koleksiyonuna herhangi bir zamanda eklenebilir veya kaldırılabilir. Dizi listesi koleksiyonu için mevcut işlemlere daha ayrıntılı olarak bakalım.

Dizi Listesinin Bildirilmesi

ArrayList'in bildirimi aşağıda verilmiştir. ArrayList Veri Tipinin yardımıyla bir dizi listesi oluşturulur. ArrayList nesnesini oluşturmak için “new” anahtar sözcüğü kullanılır. Daha sonra nesne a1 değişkenine atanır. Şimdi a1 değişkeni dizi listesinin farklı öğelerine erişmek için kullanılacak.

ArrayList a1 = new ArrayList()

Bir diziye öğe ekleme

Add yöntemi ArrayList'e bir öğe eklemek için kullanılır. Ekleme yöntemi, dizi listesine herhangi bir veri türü öğesi eklemek için kullanılabilir. Böylece dizi listesine bir Tamsayı, bir dize ve hatta bir Boolean değeri ekleyebilirsiniz. Toplama yönteminin genel sözdizimi aşağıda verilmiştir.

ArrayList.add(element)

Aşağıda “ekleme” yönteminin nasıl kullanılabileceğine dair bazı örnekler verilmiştir. Array List koleksiyonuna çeşitli veri türlerini eklemek için add yöntemi kullanılabilir.

Aşağıda Integer'ın String'lerini ve hatta Boolean değerlerini Array List koleksiyonuna nasıl ekleyebileceğimize dair örnekleri görebilirsiniz.

  • a1.add(1) – Bu, koleksiyona bir Tamsayı değeri ekleyecektir
  • a1.add(“Örnek”) – Bu, koleksiyona bir String değeri ekleyecektir
  • a1.add(true) – Bu, koleksiyona bir Boolean değeri ekleyecektir

Şimdi bunun kod düzeyinde çalıştığını görelim. Aşağıda belirtilen kodların tamamı Konsol uygulamamıza yazılacaktır. Kod Program.cs dosyamıza yazılacaktır.

Aşağıdaki programda yeni dizi listesi oluşturacak kodu yazacağız. Ayrıca Dizi listesinin elemanlarını eklemeyi ve elemanlarını görüntülemeyi de göstereceğiz.

C# dilinde ArrayList

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1[0]);	  
   Console.WriteLine(a1[1]);
   Console.WriteLine(a1[2]);
   Console.ReadKey();
  }
 }
}

Code Açıklama:-

  1. İlk adım Dizi Listemizi bildirmek için kullanılır. Burada a1'i dizi listemizin elemanlarını tutacak bir değişken olarak bildiriyoruz.
  2. Daha sonra dizi listesine 1 sayısını, “Örnek” dizesini ve 'true' Boolean değerini eklemek için add anahtar sözcüğünü kullanırız.
  3. Daha sonra her dizi listesi öğesinin değerini konsolda görüntülemek için Console.WriteLine yöntemini kullanırız. Tıpkı dizilerde olduğu gibi öğelere dizin konumları aracılığıyla erişebildiğimizi fark edeceksiniz. Dizi Listesinin ilk konumuna erişmek için [0] dizin konumunu kullanırız. Ve benzeri.

Yukarıdaki kod düzgün bir şekilde girilip program çalıştırıldığında aşağıdaki çıktı görüntülenecektir.

Çıktı:

C# dilinde ArrayList

Çıktıdan dizi listesindeki tüm öğelerin konsola gönderildiğini görebilirsiniz.

ArrayList'in bir parçası olarak mevcut olan bazı yöntemlere daha bakalım.

saymak

Bu yöntem ArrayList koleksiyonundaki öğe sayısını almak için kullanılır. Aşağıda bu ifadenin genel sözdizimi verilmiştir.

ArrayList.Count() – Bu yöntem, dizi listesinin içerdiği öğelerin sayısını döndürür.

İçeren

Bu yöntem ArrayList koleksiyonunda bir öğenin mevcut olup olmadığını görmek için kullanılır. Bu ifadenin genel sözdizimi aşağıdadır

ArrayList.Contains(element) – Bu yöntem, öğe listede mevcutsa true değerini döndürür, aksi takdirde false değerini döndürür.

KaldırAt

Bu yöntem, ArrayList koleksiyonunda belirli bir konumdaki bir öğeyi kaldırmak için kullanılır. Bu ifadenin genel sözdizimi aşağıdadır

ArrayList.RemoveAt(index) – Bu yöntem, bir öğeyi Dizi Listesinin belirli bir konumundan kaldıracaktır.

Şimdi bunun kod düzeyinde çalıştığını görelim. Aşağıda belirtilen kodların tamamı Konsol uygulamamıza yazılacaktır. Kod Program.cs dosyamıza yazılacaktır.

Aşağıdaki programda yukarıda bahsettiğimiz yöntemleri nasıl kullanabileceğimizi görmek için kod yazacağız.

C# dilinde ArrayList

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1.Count);
   Console.WriteLine(a1.Contains(2));
   Console.WriteLine(a1[1]);
   a1.RemoveAt(1);
   Console.WriteLine(a1[1]);
   Console.ReadKey();
  }
 }
}

Code Açıklama:-

  1. Yani gördüğümüz ilk özellik Count özelliğidir. a1 dizi listesinin Count özelliğini alıyoruz ve bunu Console'a yazıyoruz.
  2. İkinci kısımda ise ArrayList a1’in 2 elemanını içerip içermediğini görmek için Container metodunu kullanıyoruz. Daha sonra sonucu Writeline komutu ile Console’a yazıyoruz.
  3. Son olarak, Öğeyi kaldır yöntemini göstermek için aşağıdaki adımları gerçekleştiriyoruz:
    1. Öncelikle dizi listesinin Index pozisyonu 1'deki elemanın değerini konsola yazıyoruz.
    2. Daha sonra dizi listesinin Index pozisyonu 1'deki elemanı kaldırıyoruz.
    3. Son olarak dizi listesinin Index pozisyonu 1'deki elemanın değerini yine konsola yazıyoruz. Bu adımlar, kaldırma yönteminin olması gerektiği gibi çalışıp çalışmayacağına dair adil bir fikir verecektir.

Yukarıdaki kod düzgün bir şekilde girilip program çalıştırıldığında aşağıdaki çıktı görüntülenecektir.

Çıktı:

C# dilinde ArrayList

Son değer neden doğrudur?

Olayların sırasını görürseniz Örnek öğesi diziden kaldırılır çünkü bu konum 1'dedir. Dizinin 1. konumu daha sonra daha önce 2. konumda olan ve 'true' değeri olan öğeyle değiştirilir.

C# ArrayList'te Döngü Nasıl Oluşturulur?

Bir ArrayList'in her öğesini okumak yaygın bir işlemdir. ArrayList öğelerini nesne olarak sakladığı için, bunları bir foreach döngüsü veya Count özelliğini kullanan bir for döngüsü ile ziyaret edebilirsiniz. Foreach döngüsü en basit yöntemdir, çünkü bir dizine ihtiyaç duymadan her öğeyi sırayla inceler.

Aşağıdaki örnek, stringlerden oluşan bir ArrayList oluşturur ve her değeri ayrı bir satırda yazdırır. Kod, bir Konsol uygulamasının Program.cs dosyasında yazılmıştır.

) 1 Adım System.Collections ad alanını içe aktarın ve üç öğeden oluşan bir ArrayList oluşturun.

) 2 Adım Her bir öğeyi nesne olarak okumak ve konsola yazmak için bir foreach döngüsü kullanın.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add("Java");
   a1.Add("Python");
   a1.Add("Kotlin");
   foreach (object item in a1)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Code Açıklama:-

  1. System.Collections ad alanı içe aktarılarak ArrayList türü programa erişilebilir hale getirilir.
  2. Add metodu kullanılarak ArrayList'e üç adet string değeri eklenir.
  3. `foreach` döngüsü her öğeyi bir nesne olarak okur ve `Console.WriteLine` yöntemi bunu yeni bir satıra yazdırır.

Program çalıştırıldığında şunu yazdırır: Java, Python, ve Kotlin Ayrı satırlarda. Count özelliğine sahip bir for döngüsü aynı sonucu verirken, her öğenin indeks konumunu kullanmanıza da olanak tanır.

C# ArrayList Metotları ve Özellikleri

ArrayList sınıfı, öğelerini yönetmek için birçok yerleşik yöntem ve özellik sunar. Öğeleri ekleme ve kaldırmanın ötesinde, koleksiyonu sıralayabilir, arayabilir ve tersine çevirebilir. En yaygın üyeler aşağıda listelenmiştir.

Üye Açıklama
Ekle ArrayList'in sonuna tek bir öğe ekler.
Ekle Belirtilen dizin konumuna bir öğe ekler.
Kaldır Belirtilen öğenin ilk geçtiği yeri kaldırır.
KaldırAt Verilen indeks konumundaki öğeyi siler.
Şeffaf ArrayList'teki tüm öğeleri kaldırır.
Sırala Öğeleri artan sırada sıralar.
Reverse ReverseListedeki öğelerin sırasını gösterir.
İçeren Belirtilen öğenin listede olup olmadığını kontrol eder ve varsa true değerini döndürür.
IndexOf Verilen öğenin indeks konumunu döndürür.
saymak Kaydedilen eleman sayısını döndüren özellik.
Kapasite Listenin tutabileceği eleman sayısını döndüren özellik.

Bu üyeler, mantığı kendiniz yazmanıza gerek kalmadan öğeleri eklemenize, bulmanıza, sıralamanıza ve kaldırmanıza olanak tanır; bu da düz bir dizi yerine koleksiyon kullanmanın başlıca avantajlarından biridir.

C#'da ArrayList ve List Arasındaki Fark

Hem bir ArrayList hem de genel bir Liste Çalışma zamanında büyüyebilen bir grup öğeyi saklarlar, ancak türleri ele alma biçimleri farklıdır. Bu farkı bilmek, modern C# kodu için doğru olanı seçmenize yardımcı olur.

Başlıca farklılıklar aşağıda listelenmiştir:

  • Tip güvenliği: Bir ArrayList her öğeyi bir nesne olarak saklarken, bir List tek bir tanımlanmış türe bağlıdır ve derleme zamanında kontrol edilir.
  • Performans: ArrayList, int gibi değer tiplerini kutulayıp kutudan çıkarır; bu da zaman kaybına neden olur. Oysa List, daha iyi hız için kutulama işleminden kaçınır.
  • Ad alanı: ArrayList, System.Collections içinde yer alırken, List ise System.Collections.Generic içinde yer alır.
  • Döküm: ArrayList'ten okuma işlemi genellikle orijinal türe geri dönüştürme gerektirir, ancak List doğrudan doğru türü döndürür.
  • Öneri: Microsoft List'i yeni geliştirmeler için daha güvenli, daha hızlı ve okunması daha kolay olduğu için öneriyor.

Özetle, ArrayList eski kodları veya karma veri tipli depolamayı anlamak için kullanışlıyken, List günümüzde çoğu uygulama için tercih edilen seçenektir.

SSS

Bir dizi sabit bir boyuta sahiptir ve tanımlama sırasında belirlenen tek bir veri türünü saklar. Bir ArrayList ise çalışma zamanında büyür ve küçülür ve her öğeyi bir nesne olarak saklar, bu nedenle tek bir listede karışık veri türlerini tutabilir.

ArrayList kaldırılmıyor, ancak Microsoft Yeni geliştirmeler için önerilmez. Tür güvenliği ve daha iyi performans sağladığı için System.Collections.Generic içindeki genel List sınıfı tercih edilir, bu nedenle çoğu modern C# kodu bunun yerine List kullanır.

ArrayList öğeleri nesne olarak sakladığı için, int gibi bir değer türü eklemek onu bir nesneye sarar, bu da "boxing" olarak adlandırılır. Geri okumak ve orijinal türe dönüştürmek ise "unboxing" işlemidir. Her iki adım da performansı düşürür ve List bu performans düşüşlerinden kaçınır.

Bir ArrayList aynı anda birden fazla okuyucuyu destekler, ancak koleksiyon değiştirildiğinde örnek üyelerinin iş parçacığı açısından güvenli olması garanti edilmez. Güvenli çoklu iş parçacıklı yazma işlemleri için, onu bir ArrayList ile sarmalayın.SyncBunun yerine kronize edilmiş bir yöntem kullanın veya eşzamanlı bir koleksiyon kullanın.

Count, ArrayList'te şu anda depolanan eleman sayısını gösterir. Capacity ise, yeniden boyutlandırılmadan önce tutabileceği toplam eleman sayısını belirtir. Capacity her zaman Count'a eşit veya ondan büyüktür ve eleman ekledikçe otomatik olarak artar.

Öğeleri Cast ve ToList yöntemleriyle kesin türde bir Listeye kopyalayabilir veya ToArray yöntemini çağırarak bir nesne dizisi elde edebilirsiniz. Genel bir Listeye dönüştürmek yaygındır çünkü tür güvenliğini geri kazandırır.

Evet. GitHub Copilot, kısa bir yorum veya metot adından ArrayList bildirimleri yazabilir, çağrıları ekleyip kaldırabilir ve döngüler oluşturabilir. Genellikle yeni C# kodları için önerilen koleksiyon türü olan genel List sürümünü de önerir.

ML.NET genellikle eğitim verilerini List ve IEnumerable gibi genel koleksiyonlar aracılığıyla okur ve bunlar IDataView işlem hattına eşlenir. Genel olmayan bir ArrayList nadiren doğrudan kullanılır çünkü güçlü tipli bir koleksiyon, makine öğrenimi verilerini açık ve tip güvenli tutar.

Bu yazıyı şu şekilde özetleyin: