Sdílet prostřednictvím


Postup: definování třídy, který může poskytovat stejné funkce na různé datové typy (Visual Basic)

Můžete definovat třídu ze které můžete vytvářet objekty, které poskytují stejné funkce v různých datových typů.Chcete-li to provést, můžete zadat jeden nebo více Parametry typu v definici.Třídy může sloužit jako šablona pro objekty, které používají různé datové typy.Třídy definované tímto způsobem se nazývá Obecná třída.

Výhodou definování Obecná třída je, že pouze jednou definovat a kódu můžete použít k vytvoření mnoha objektů, které využívají širokou škálu typů dat.Výsledkem je lepší výkon než definice třídy s Object typu.

Vedle třídy můžete definovat a používat obecné struktury, rozhraní, postupy a delegáty.

Definovat třídu, typ parametru

  1. Definujte třídy způsobem normální.

  2. Přidat (Oftypeparameter) bezprostředně po názvu třídy, určete parametr typu. 

  3. Pokud máte více než jeden parametr typu, vytvořte seznam oddělený čárkami v závorkách.Opakovat Of klíčové slovo.

  4. Pokud váš kód provádí operace na parametr typu než jednoduché přiřazení, postupujte podle parametru typ s As klauzule přidat jeden nebo více omezení.Omezení záruky, že poskytnutý typ parametru typ splňuje požadavky, jako například:

    • Podporuje operace, jako například >, který provádí kódu

    • Podporuje člena, jako je například metoda, který má přístup ke kódu

    • Poskytuje konstruktor bez parametrů

    Pokud nezadáte žádné omezení, pouze operace a členy pomocí kódu jsou podporovány Datový typ objektu.Další informace naleznete v tématu Typ seznamu (Visual Basic).

  5. Identifikovat každý člen třídy, který má být prohlášeno zadaný typ a jeho deklaraci Astypeparameter. To platí pro interní úložiště, postup parametrů a vrácené hodnoty.

  6. Zkontrolujte kód používá pouze operace a metody, které jsou podporovány libovolný datový typ lze poskytnout itemType.

    Následující příklad definuje třídu, která spravuje seznam velmi jednoduché.Seznam obsahuje vnitřní pole itemsa pomocí kódu deklarovat datový typ prvků seznamu.S parametry konstruktoru umožňuje pomocí kódu nastavíte horní mez items, a nastaví výchozí konstruktor tuto 9 (pro celkem 10 položek).

    Public Class simpleList(Of itemType)
      Private items() As itemType
      Private top As Integer
      Private nextp As Integer
      Public Sub New()
        Me.New(9)
      End Sub
      Public Sub New(ByVal t As Integer)
        MyBase.New()
        items = New itemType(t) {}
        top = t
        nextp = 0
      End Sub
      Public Sub add(ByVal i As itemType)
        insert(i, nextp)
      End Sub
      Public Sub insert(ByVal i As itemType, ByVal p As Integer)
        If p > nextp OrElse p < 0 Then
          Throw New System.ArgumentOutOfRangeException("p", 
            " less than 0 or beyond next available list position")
        ElseIf nextp > top Then
          Throw New System.ArgumentException("No room to insert at ", 
            "p")
        ElseIf p < nextp Then
          For j As Integer = nextp To p + 1 Step -1
            items(j) = items(j - 1)
          Next j
        End If
        items(p) = i
        nextp += 1
      End Sub
      Public Sub remove(ByVal p As Integer)
        If p >= nextp OrElse p < 0 Then
            Throw New System.ArgumentOutOfRangeException("p", 
                " less than 0 or beyond last list item")
        ElseIf nextp = 0 Then
            Throw New System.ArgumentException("List empty; cannot remove ", 
                "p")
        ElseIf p < nextp - 1 Then
            For j As Integer = p To nextp - 2
                items(j) = items(j + 1)
            Next j
        End If
        nextp -= 1
      End Sub
      Public ReadOnly Property listLength() As Integer
        Get
          Return nextp
        End Get
      End Property
      Public ReadOnly Property listItem(ByVal p As Integer) As itemType
        Get
          If p >= nextp OrElse p < 0 Then
            Throw New System.ArgumentOutOfRangeException("p", 
              " less than 0 or beyond last list item")
            End If
          Return items(p)
        End Get
      End Property
    End Class
    

    Můžete deklarovat třídu z simpleList k uložení seznamu Integer hodnoty jiné třídy držet seznam String hodnoty a jiné držet Date hodnoty.S výjimkou pro typ dat seznamu členů objekty vytvořené z těchto tříd chovat stejně.

    Argument typ, který pomocí kódu dodávky na itemType může být například vnitřního typu Boolean nebo Double, strukturu, výčet nebo jakýkoli typ třídy, která definuje aplikace včetně.

    Můžete vyzkoušet třídy simpleList s následujícím kódem.

    Public Sub useSimpleList()
      Dim iList As New simpleList(Of Integer)(2)
      Dim sList As New simpleList(Of String)(3)
      Dim dList As New simpleList(Of Date)(2)
      iList.add(10)
      iList.add(20)
      iList.add(30)
      sList.add("First")
      sList.add("extra")
      sList.add("Second")
      sList.add("Third")
      sList.remove(1)
      dList.add(#1/1/2003#)
      dList.add(#3/3/2003#)
      dList.insert(#2/2/2003#, 1)
      Dim s = 
        "Simple list of 3 Integer items (reported length " &
         CStr(iList.listLength) & "):" &
         vbCrLf & CStr(iList.listItem(0)) &
         vbCrLf & CStr(iList.listItem(1)) &
         vbCrLf & CStr(iList.listItem(2)) &
         vbCrLf &
         "Simple list of 4 - 1 String items (reported length " &
         CStr(sList.listLength) & "):" &
         vbCrLf & CStr(sList.listItem(0)) &
         vbCrLf & CStr(sList.listItem(1)) &
         vbCrLf & CStr(sList.listItem(2)) &
         vbCrLf &
         "Simple list of 2 + 1 Date items (reported length " &
         CStr(dList.listLength) & "):" &
         vbCrLf & CStr(dList.listItem(0)) &
         vbCrLf & CStr(dList.listItem(1)) &
         vbCrLf & CStr(dList.listItem(2))
      MsgBox(s)
    End Sub
    

Viz také

Úkoly

Jak: použití obecného třídy (Visual Basic)

Referenční dokumentace

Klauzule (Visual Basic)

Typ seznamu (Visual Basic)

Datový typ objektu

Koncepty

Datové typy jazyka Visual Basic

Obecné typy jazyka Visual Basic (Visual Basic)

Specifikace CLS (Common Language Specification)