Soru Geçmişi
List(Of T) koleksiyonu, VB.NET'te eski koleksiyonların yerini almak için tanıtılmıştır. Bu, tür güvenliği, dinamik boyut değiştirme ve elemanlara indeks ile hızlı erişim sağlar. Bir liste kullanmak, verileri yapılandırmayı, türlendirilmiş elemanlarla çalışmayı ve genel koleksiyonlarla ilgili yaygın hatalardan kaçınmayı sağlar.
Sorun
Yeni başlayanlar genellikle listelerin elemanlarına nasıl doğru bir şekilde erişeceğini, elemanları nasıl ekleyeceğini, değiştireceğini ve sileceğini, ve geçersiz indeks kullanımı durumunda ne olacağını (örneğin, listenin dışında çıkmak) anlamazlar. Bu, programın çalışması esnasında istisnalara neden olur.
Çözüm
List(Of T) içindeki elemanlar sıfırdan indekslenir. Bir elemana erişim, hem okumak hem de yazmak için indeks kullanılarak gerçekleştirilir. Eğer indeks geçersizse, ArgumentOutOfRangeException istisnası ortaya çıkar. Koleksiyon yöntemleri, elemanlarla güvenli bir şekilde çalışmayı sağlar:
Kod örneği:
Imports System.Collections.Generic Dim numbers As New List(Of Integer)() numbers.Add(10) numbers.Add(20) Dim first As Integer = numbers(0) ' 0 indeksli elemanı al numbers(1) = 99 ' 1 indeksli elemanı ayarla ' Silme numbers.RemoveAt(0) ' İndekse göre sil
Temel Özellikler:
List(Of T) üzerindeki eleman sayısına eşit bir indekse erişirsek, son elemanı alır mıyız?
Hayır. İndeksleme 0'dan başlar ve maksimum izin verilen indeks (Count - 1)'dir. Count'a eşit bir indekse erişildiğinde ArgumentOutOfRangeException hatası ortaya çıkar.
Mevcut verileri silmeden List(Of T) ortasına eleman eklemek mümkün mü?
Evet, Insert yöntemi ile:
numbers.Insert(1, 42) ' 42'yi ikinci pozisyona yerleştirir, diğerlerini sağa kaydırır.
For Each ile dolaşırken List(Of T) koleksiyonunu değiştirmek tehlikeli midir?
Tehlikelidir. Bu, InvalidOperationException hatasına neden olur. Bu tür işlemler için indeks ile For kullanın veya önceden silinecek bir liste oluşturun.
Program, For Each ile List(Of T) üzerinde dönerken döngü içinde elemanları siler.
Artılar:
Eksiler:
InvalidOperationException ile sonlanır, veriler işlenmez.Kod sondan başlayarak For ile elemanları döndürür ve uygun objeleri siler.
Artılar:
Eksiler: