Megosztás a következőn keresztül:


Típuslista (Visual Basic)

Egy általános programozási elem típusparamétereit adja meg. Több paramétert vessző választ el egymástól. Az alábbiakban egy típusparaméter szintaxisa található.

Syntax

[genericmodifier] typename [ As constraintlist ]

Részek

Időszak Definíció
genericmodifier Opcionális. Csak általános felületeken és meghatalmazottakban használható. A "Ki" kulcsszóval vagy a Contravarianttal deklarálhat egy kovarians típust az In kulcsszóval. Lásd: Kovariancia és Contravariance.
typename Szükséges. A típusparaméter neve. Ez egy helyőrző, amelyet a megfelelő típusargumentum által megadott típus helyettesít.
constraintlist Opcionális. Azon követelmények listája, amelyek korlátozzák a megadható adattípust typename. Ha több korlátozással rendelkezik, kapcsos zárójelekbe ({ }) ágyazhatja őket, és vesszővel elválaszthatja őket. A kényszerlistát a Mint kulcsszóval kell bemutatnia. Csak egyszer használja As a lista elején.

Megjegyzések

Minden általános programozási elemnek legalább egy típusparamétert kell tartalmaznia. A típusparaméter egy adott típus (egy létrehozott elem) helyőrzője, amelyet az ügyfélkód az általános típus példányának létrehozásakor határoz meg. Definiálhat általános osztályt, struktúrát, felületet, eljárást vagy delegáltat.

Az általános típus meghatározásának időpontjáról további információt a Visual Basic Általános típusai című témakörben talál. A típusparaméterek nevével kapcsolatos további információkért lásd: Deklarált elemnevek.

Szabályok

  • Zárójel. Ha típusparaméter-listát ad meg, zárójelbe kell tennie, és be kell vezetnie a listát az Of kulcsszóval. Csak egyszer használja Of a lista elején.

  • Korlátok. A típusparaméterre vonatkozó korlátozások listája a következő elemeket is tartalmazhatja bármilyen kombinációban:

    • Tetszőleges számú adapter. A megadott típusnak a listában szereplő összes felületet implementálnia kell.

    • Legfeljebb egy osztályban. A megadott típusnak az adott osztálytól kell örökölnie.

    • Az New kulcsszóból. A megadott típusnak közzé kell tennie egy paraméter nélküli konstruktort, amelyhez az általános típus hozzáférhet. Ez akkor hasznos, ha egy típusparamétert egy vagy több illesztővel korlátoz. Az interfészeket megvalósító típus nem feltétlenül teszi elérhetővé a konstruktort, és a konstruktor hozzáférési szintjétől függően előfordulhat, hogy az általános típuson belüli kód nem fér hozzá.

    • Vagy a Class kulcsszó vagy a Structure kulcsszó. A Class kulcsszó egy általános típusparaméterre korlátozza, hogy a neki átadott típusargumentum hivatkozástípus legyen, például sztring, tömb vagy delegált, vagy egy osztályból létrehozott objektum. A Structure kulcsszó egy általános típusparaméterre korlátozza annak megkövetelését, hogy a neki átadott típusargumentum értéktípus legyen, például struktúra, enumerálás vagy elemi adattípus. Egyszerre és Structure ugyanabban constraintlista fájlban nem szerepelhetClass.

    A megadott típusnak minden követelménynek meg kell felelnie, amelybe belefoglalt constraintlist.

    Az egyes típusparaméterekre vonatkozó korlátozások függetlenek más típusparaméterekre vonatkozó korlátozásoktól.

Működés

  • Fordítási idő helyettesítése. Amikor egy általános programozási elemből létrehoz egy létrehozott típust, minden típusparaméterhez meg kell adnia egy meghatározott típust. A Visual Basic fordító a megadott típust helyettesíti az általános elem minden előfordulásához typename .

  • Korlátozások hiánya. Ha nem ad meg semmilyen korlátozást egy típusparaméterre vonatkozóan, a kód az adott típusparaméter Objektum adattípusa által támogatott műveletekre és tagokra korlátozódik.

1. példa

Az alábbi példa egy általános szótárosztály csontvázdefinícióját mutatja be, beleértve egy csontvázfüggvényt is, amely új bejegyzést ad hozzá a szótárhoz.

Public Class dictionary(Of entryType, keyType As {IComparable, IFormattable, New})
    Public Sub add(ByVal et As entryType, ByVal kt As keyType)
        Dim dk As keyType
        If kt.CompareTo(dk) = 0 Then
        End If
    End Sub
End Class

2. példa

Mivel dictionary általános, az azt használó kód számos objektumot hozhat létre belőle, amelyek mindegyike ugyanazzal a funkcióval rendelkezik, de más adattípuson működik. Az alábbi példa egy kódsort mutat be, amely bejegyzéseket és Integer kulcsokat tartalmazó String objektumot hoz létredictionary.

Dim dictInt As New dictionary(Of String, Integer)

3. példa

Az alábbi példa az előző példában létrehozott egyenértékű csontvázdefiníciót mutatja be.

Public Class dictionary
    Public Sub Add(ByVal et As String, ByVal kt As Integer)
        Dim dk As Integer
        If kt.CompareTo(dk) = 0 Then
        End If
    End Sub
End Class

Lásd még