ProgramlamaVB.NET Geliştirici

List(Of T) koleksiyonuna erişim nasıl çalışır, hangi işlemler mevcuttur ve hangi durumlarda indeks erişiminde hatalar ortaya çıkar?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

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:

  • Dinamik boyut, otomatik bellek yeniden dağıtımı
  • Hızlı indekslenmiş erişim O(1)
  • Tür güvenliği (tür hataları derleme sırasında ortadan kaldırılır)

Yandan Sorular.

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.

Tipik Hatalar ve Anti-Desenler

  • Mevcut olmayan bir indekse erişim
  • For Each içinde eleman ekleme/silme
  • Erişim öncesi boşluğu kontrol etme eksikliği

Gerçek Hayat Örneği

Olumsuz Durum

Program, For Each ile List(Of T) üzerinde dönerken döngü içinde elemanları siler.

Artılar:

  • Yazılması kolay.

Eksiler:

  • Program InvalidOperationException ile sonlanır, veriler işlenmez.

Olumlu Durum

Kod sondan başlayarak For ile elemanları döndürür ve uygun objeleri siler.

Artılar:

  • Hiçbir istisna yok, her şey düzgün bir şekilde silinir.

Eksiler:

  • Döngü okunabilirliği biraz daha zor.