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
Definujte třídy způsobem normální.
Přidat (Oftypeparameter) bezprostředně po názvu třídy, určete parametr typu.
Pokud máte více než jeden parametr typu, vytvořte seznam oddělený čárkami v závorkách.Opakovat Of klíčové slovo.
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).
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.
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
Koncepty
Datové typy jazyka Visual Basic