Sdílet prostřednictvím


Postupy: Definice třídy, která poskytne identické funkce pro 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 Seznam typů (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

Postupy: Použití obecné třídy (Visual Basic)

Referenční dokumentace

Of – klauzule (Visual Basic)

Seznam typů (Visual Basic)

Datový typ objektu

Koncepty

Datové typy v jazyce Visual Basic

Obecné typy v jazyce Visual Basic (Visual Basic)

Jazyková nezávislost a jazykově nezávislé komponenty