Visual Basic'de Genel Türler (Visual Basic)
A Genel tür uyum çeşitli veri türleri için aynı işlevleri gerçekleştirmek için tek bir programlama öğesidir.Bir generic sýnýf ya da yordam tanımladığınızda, bu işlevi gerçekleştirmek isteyebilirsiniz her veri türü için ayrı bir sürüm tanımlamak gerekmez.
Benzetme yapmak gerekirse, çıkarılabilir kafalarıyla tornavida olur.O Vidayı için doğru kafasını seçin ve açmak için gereksinim duyduğunuz Vidayı inceleyin (yarıklı, çapraz, starred).Doğru kafa tornavida işleyiciyi ekledikten sonra tam aynı işlevi tornavida ile Vidayı yani kapatma gerçekleştirmek.
Tornavida genel bir araç olarak ayarla
Genel tür tanımladığınızda, bir veya daha fazla veri türleriyle parametreli.Böylece kullanarak veri türleri kendi gereksinimlerine uyarlamak için kod.Her biri farklı bir veri türleri kümesi işlevi gören genel öğeden birkaç farklı programlama öğeleri kodunuza bildirebilirsiniz.Ancak, tüm bildirilen öğeler kullanmakta olduğunuz hangi veri türleri ne olursa olsun aynı mantığı gerçekleştirir.
Örneğin, belirli bir veri türü üzerinde gibi çalışır bir sıra sınıf oluşturmak isteyebilirsiniz String.Böyle bir sınıftan bildirebilirsiniz Queue, aşağıdaki örnekte gösterildiği gibi.
Public stringQ As New System.Collections.Generic.Queue(Of String)
Şimdi kullanabilirsiniz stringQ özel olarak çalışmak için String değerleri.Çünkü stringQ için özel String için Genelleştirilmiş yerine Object değerleri, geç bağlama veya türü dönüştürme hakkınız yok.Bu yürütme zamanı kaydeder ve çalışma zamanı hataları azaltır.
Genel tür kullanma hakkında daha fazla bilgi için bkz: Nasıl yapılır: Genel Bir Sınıf Kullanma (Visual Basic).
Genel sınıf örneği
Aşağıdaki örnek, bir generic sýnýfýn bir iskelet tanımını gösterir.
Public Class classHolder(Of t)
Public Sub processNewItem(ByVal newItem As t)
Dim tempItem As t
' Insert code that processes an item of data type t.
End Sub
End Class
Önceki bir çatı içinde t olan bir tür parametresi, yani sınıf bildirin, sizin sağladığınız bir veri türü için yer tutucu.Başka bir yerde kodda, çeşitli sürümlerini bildirebilirsiniz classHolder sağlamak için çeşitli veri türleri tarafından t.Aşağıdaki örnek, iki tür bildirimleri gösterir.
Public integerClass As New classHolder(Of Integer)
Friend stringClass As New classHolder(Of String)
Yukarıdaki ifadelerden bildirin oluşturulmuş sınıflar, belirli bir tür değiştirir tür parametresi.Bu değiştirme oluşturulmuş sınıf içindeki kod boyunca yayılır.Aşağıdaki örnek, ne gösterir processNewItem gibi yordam görünür integerClass.
Public Sub processNewItem(ByVal newItem As Integer)
Dim tempItem As Integer
' Inserted code now processes an Integer item.
End Sub
Daha tam bir örnek için bkz: Nasıl yapılır: Farklı Veri Türlerinde Aynı İşlevselliği Sağlayabilen Bir Sınıf Tanımlama (Visual Basic).
Uygun programlama öğeleri
Tanımlamak ve genel sınıfları, yapıları, arabirimleri, yordamları ve temsilciler kullanın.Dikkat edin .NET Framework birkaç genel sınıflar, yapılar ve yaygın olarak kullanılan genel öğeleri temsil eden arabirimler tanımlar.System.Collections.Generic Sözlükler, listeleri, sıralar ve yığınları ad alanı sağlar.Genel öğenizi tanımlamadan önce onu zaten kullanılabilir durumda olup olmadığını System.Collections.Generic.
Yordamlar türleri değil, ancak tanımlamak ve genel yordamları kullanın.Bkz: Visual Basic'de Genel Yordamlar
Genel türler avantajları
Genel tür her biri belirli bir veri türü üzerinde çalışır birkaç farklı programlama öðeler bildirmek için bir temel olarak hizmet verir.Genel tür için alternatifler şunlardır:
Üzerinde çalışan tek bir tür Object veri türü.
Bir dizi türüne özgü tek tek kodlanmış ve üzerinde belirli bir veri türü gibi işletim sürüm türü sürümleri String, Integer, veya kullanıcı tanımlı bir tür gibi customer.
Genel tür bu alternatifleri göre aşağıdaki avantajları vardır:
Tür güvenliği. Genel türler, derleme zamanı tür denetlemesi zorlama.Türlerine göre Object herhangi bir veri türü kabul edin ve giriş veri türü kabul edilebilir olup olmadığını denetlemek için kod yazmanız gerekir.Genel türler ile derleyici önce çalışma zamanı tür uyuşmazlıkları yakalayabilir.
Performans. Genel türler zorunda değilsiniz kutusunu ve kaldırmak verileri, çünkü her biri bir veri türü için özelleştirilmiştir.Operasyonlar temel alınarak Object onları dönüştürmek için giriş veri tipleri kutu gerekir Object ve çıktı için hedeflenen verileri kaldırmak.Kutulama ve kutulamayý kaldýrma þeffaf performansını azaltır.
Türlerine göre Object üyeleri erişirken fazladan kod çalışma zamanında gerektirir da Geç Baðlanmýþ, şunlardır.Bu da performansını azaltır.
Konsolidasyon kodu. Kod genel türde yalnızca bir kez tanımlanması gereken.Bir dizi türü türe özel sürümleri her sürümde aynı kod tek fark bu sürümün belirli bir veri türü ile çoğaltılması gerekir.Genel türler ile türüne özgü sürümleri tüm özgün genel türünden oluşturulur.
Kodu yeniden kullanma. Genel olarak, belirli veri türüne bağlı olmayan kod çeşitli veri türleri ile yeniden kullanılabilir.Genellikle, değil başlangıçta tahmin bile bir veri türü ile kullanabilirsiniz.
IDE desteği. Bildirilen genel türünden oluşturulmuş bir tür kullandığınızda, kodunuzu geliştirirken tümleşik geliştirme ortamı (IDE), daha fazla destek verebilirsiniz.Örneğin, IntelliSense yapıcı veya yönteme bir bağımsız değişken türüne özgü seçenekleri gösterebilirsiniz.
Genel algoritmaları. Tür bağımsız soyut algoritmaları, genel türler için iyi adaylardır.Örneğin, öğeleri sıralar genel bir yordam kullanarak IComparable arabirimini uygulayan herhangi bir veri türü ile kullanılabilir IComparable.
Kısıtlamalar
Genel tür tanımında kod olarak türü olabildiğince bağımsız olmalıdır, ancak genel türünüzü sağlanan herhangi bir veri türü belirli bir yetenek gerektirir gerekir.Örneğin, sıralama veya harmanlama amacıyla iki öğeleri karşılaştırmak istiyorsanız, veri türlerine uygulamalıdır IComparable arabirim.Bu gereksinim ekleyerek zorunlu bir kısıtlama tür parametresi için.
Bir kısıtlama örneği
Aşağıdaki örnek bir iskelet uygulamak için tür bağımsız değişken gerektiren bir sınırlama bir sınıfın tanımını gösterir IComparable.
Public Class itemManager(Of t As IComparable)
' Insert code that defines class members.
End Class
Bir sınıf oluşturmak sonraki kod çalışırsa itemManager uygulamayan bir tür Johannes IComparable, derleyici bir hata bildirir.
Kısıtlama türleri
Bilgisayarınızı kısıtlaması aşağıdaki gereksinimleri herhangi bir bileşimini belirtebilirsiniz:
Bir veya daha fazla arabirim türü bağımsız değişkeni uygulamalıdır
Tür bağımsız değişkeni olmalıdır türünde olması veya en fazla bir sınıftan kalıtımla
Tür bağımsız değişkeni nesneleri oluşturur kod erişilebilir bir parametresiz oluşturucusu göstermek gerekir
Tür bağımsız değişkeni olmalıdır bir Başvuru türü, veya olması gereken bir değer türü
Birden fazla gereksinim koymak gerekirse, virgülle ayrılmış kullanın Kısıtlama Listesi kaşlı ayraçlar içinde ({ }).Erişilebilir bir kurucu gerektirecek şekilde dahil New İşleci (Visual Basic) anahtar sözcük listesinde.Bir başvuru türü gerektirecek şekilde dahil Class anahtar; bir değer türü gerektirecek şekilde dahil Structure anahtar sözcük.
Sınırlamalar hakkında daha fazla bilgi için bkz: Tür Listesi (Visual Basic).
Birden çok sınırlama örneği
Aşağıdaki örnek type parametresi bir iskelet tanımı bir generic sýnýfýn bir kısıtlama listesi gösterir.Bu sınıfın bir örneğini oluşturur kodda iki tür bağımsız değişkeni uygulamalıdır IComparable ve IDisposable arabirimleri, bir başvuru türü olması ve erişilebilir bir parametresiz oluşturucusu sergilemek.
Public Class thisClass(Of t As {IComparable, IDisposable, Class, New})
' Insert code that defines class members.
End Class
Önemli terimler
Genel türler tanıtmak ve aşağıdaki terimler kullanın:
Genel tür.Sınıf, yapı, arabirim, yordam veya temsilci bildirirken, kendisi için en az bir veri türü sağladığınız tanımıdır.
Type parametresi.Türü bildirdiğinizde genel tür tanımında bir veri türü için bir yer tutucu sağlarsınız.
Type baðýmsýz deðiþkeni.Oluşturulmuş bir genel tür türünden bildirmek tür parametresi yerine, belirli bir veri türü.
Kısıtlama.Bir koşula kısıtlar türü bağımsız değişkeni bir tür parametresi için sağlayabilir.Kısıtlama türü bağımsız değişkeni gerekir belirli bir arabirimi uygulayan, veya belirli bir sınıftan, erişilebilir bir parametresiz oluşturucusu olması veya ya bir başvuru türü bir değer türü olmalıdır, gerektirebilir.Bu kısıtlamaları birleştirebilirsiniz, ancak en fazla bir sınıf belirtebilir.
Tür inşa.Sınıf, yapı, arabirim, yordam veya temsilci genel bir tür parametrelerinin türü için tür bağımsız değişkeni sağlayarak bildirilir.
Ayrıca bkz.
Görevler
Veri Türleri Sorunlarını Giderme (Visual Basic)
Başvuru
Veri Türü Özeti (Visual Basic)
Kavramlar
Tür Karakterleri (Visual Basic)
Değer Türleri ve Başvuru Türleri
Diğer Kaynaklar
Visual Basic'de Tür Dönüştürmeleri