Aracılığıyla paylaş


Genel türler Visual Basic (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 bir araç olarak tornavida diyagramı

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 System.Collections.Generic.Queue<T>, 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: bir Generic sýnýfý (Visual Basic) kullanın.

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: (Visual Basic) farklı veri türlerindeki aynı işlevselliği sağlayan bir sınıf tanımlamak.

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'te 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:

  1. Üzerinde çalışan tek bir tür Object veri türü.

  2. 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.

w256ka79.collapse_all(tr-tr,VS.110).gifBir 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.

w256ka79.collapse_all(tr-tr,VS.110).gifKı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 operatörü (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ü listesinde (Visual Basic).

w256ka79.collapse_all(tr-tr,VS.110).gifBirden ç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 (Visual Basic) sorun giderme

Başvuru

Veri türü özeti (Visual Basic)

Yan tümcesi (Visual Basic)

Olarak

Object veri türü

Kavramlar

Visual Basic'te veri türleri

Yazı karakterleri (Visual Basic)

Değer türleri ile başvuru türleri

Diğer Kaynaklar

Visual Basic'te Tür Dönüşümleri

Kovaryans ve Contravariance (C# ve Visual Basic)

Yineleyicilerde (C# ve Visual Basic)