2010-03-30 26 views
8

VB6'daki bir koleksiyon her nesne için bir tuşun kaydını tutar ve nesneyi kendi anahtarıyla arayabilirsin.Koleksiyon VB6'da Neler Yapılıyor?

Bu, koleksiyonların kaputun altında bir çeşit karma olarak uygulandığı anlamına mı geliyor? Bir koleksiyonda aynı anahtarla birden fazla öğeye sahip olabileceğinizi, dolayısıyla BAZI SORT'u bulabileceğinizi anlıyorum.

VB6 koleksiyonunun hangi tip veri yapısını temsil etmesi gerektiğini bilen var mı?

+5

** VB6 Koleksiyonunda aynı tuşa sahip birden çok öğeye ** sahip olamazsınız. – raven

+0

Bunu test ettiniz mi? Bu zamanı yarın test edeceğim ... Aynı anahtarı eklemenin bir sorun olmadığını düşünmüştüm. –

+1

NO anahtarıyla birden fazla öğe eklemek tamam, ancak anahtarlar, duyarsızca benzersizdir (Seçenek Karşılaştırma bildirimi ne olursa olsun). –

cevap

7

Bildiğim kadarıyla, VBA Koleksiyonu bir bağlı liste (Tamsayı dizinleri ve Her Biri için ... İleri) ve bir karma tablosu (tuşlarla kullanılır) olarak uygulanır. Ve Raven'ın söylediği gibi, aynı anahtara sahip birden fazla öğeye sahip olamazsınız.

Düzenlendi:

@MarkJ: Hardcore Visual Basic 2. Baskı: Bunun için alıntı Gözat vermeliydim. Microsoft Press 1997 ISBN tarafından yayınlanan Bruce McKinney, tarafından 1-57231-422-2

alıntılar:

Sayfa 191 - Koleksiyon Sınıf

"Basitçe söylemek gerekirse

, Koleksiyon sınıfı souped- olduğunu CList sınıfının C++ sürümüne kadar [...]. Aslında, eğer ikili bir bağlantılı liste olmak için CList'i geliştirirseniz ve ona birkaç özellik daha eklerseniz (ve belki de string tuşlarını aramak için bir karma tablo kullanın) Visual Basic ile sağlanan gibi bir koleksiyon sınıf var. "

Sayfa 197 - Performans

"Ve aslında bir konu olarak, ben Koleksiyonları iki kat (indeksleme desteklemek için ek özellikler ile) listeleri bağlantılı olduğunu Visual Basic geliştiriciler tarafından söylendi."

Şimdi, McKinney bir programcıdan değil, bir geliştiriciden daha çok gazeteciydi. Ancak Microsoft için çalışıyor ve VB ve VBA takımlarında temas kuruyor. Onun açıklaması benim için çalışıyor.

Bu arada, iki bağlı listenin sebebi, öğeleri koleksiyonun hem başında hem de sonunda eklemek için etkili olmasını sağlamaktır.

+0

Yani bu, aynı öğe nesnelerine referanslar tutan hem bağlantılı bir liste hem de mevcut bir yan yana mevcut olduğu anlamına mı geliyor? Ve nasıl yinelediğinize bağlı olarak, farklı veri yapılarını gerektiği gibi kullanır? –

+0

Mark, bir Koleksiyona eriştiğiniz kod arayüzünü açıklıyor. Sadece başlığın altında, işlevselliği destekleyen bir şey olması gerektiği sonucuna varabiliriz. Bağlantılı bir liste ve karma tablo kullanabileceğini tahmin edebiliriz ama bunu bilmiyoruz. – MarkJ

+0

@MarkJ: Birinin beni uygulama hakkındaki spekülasyonları bertaraf edecek bir kaynağa yönlendirebileceğini umuyordum. –