Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Meghatározhat egy osztályt, amelyből olyan objektumokat hozhat létre, amelyek azonos funkciókat biztosítanak a különböző adattípusokon. Ehhez meg kell adnia egy vagy több típusparamétert a definícióban. Az osztály ezután sablonként szolgálhat a különböző adattípusokat használó objektumokhoz. Az ilyen módon definiált osztályokat általános osztálynak nevezzük.
Az általános osztály definiálásának előnye, hogy csak egyszer definiálja, és a kód segítségével számos olyan objektumot hozhat létre, amelyek sokféle adattípust használnak. Ez jobb teljesítményt eredményez, mint az osztály típussal való Object definiálása.
Az osztályok mellett általános struktúrákat, interfészeket, eljárásokat és meghatalmazottakat is definiálhat és használhat.
Típusparaméterrel rendelkező osztály definiálása
Az osztályt a szokásos módon definiálhatja.
Adjon hozzá
(Oftípusparamétert)közvetlenül az osztály neve után egy típusparaméter megadásához.Ha több típusparaméterrel rendelkezik, hozzon létre egy vesszővel tagolt listát a zárójelek között. Ne ismételje meg a kulcsszót
Of.Ha a kód az egyszerű hozzárendelésen kívül más típusparaméteren hajt végre műveleteket, kövesse az adott típusparamétert egy záradékkal egy
Asvagy több korlátozás hozzáadásához. A kényszer garantálja, hogy az adott típusparaméterhez megadott típus megfelel az alábbi követelményeknek:Támogatja a műveletet, például
>a kód által végrehajtott műveleteketTámogatja a kód által elért tagokat( például metódusokat)
Paraméter nélküli konstruktort tesz elérhetővé
Ha nem határoz meg korlátozásokat, a kód csak az objektum adattípus által támogatott műveleteket és tagokat használhatja. További információ: Típuslista.
Azonosítsa a megadott típussal deklarálandó összes osztálytagot, és deklarálja.
AstypeparameterEz a belső tárolásra, az eljárás paramétereire és a visszatérési értékekre vonatkozik.Győződjön meg arról, hogy a kód csak olyan műveleteket és metódusokat használ, amelyeket bármilyen adattípus támogat.
itemTypeAz alábbi példa egy nagyon egyszerű listát kezelő osztályt definiál. A belső tömbben
itemstárolja a listát, a használó kód pedig deklarálhatja a listaelemek adattípusát. A paraméteres konstruktorok lehetővé teszik a kód használatával a felső határ beállításátitems, és a paraméter nélküli konstruktor ezt 9-re állítja (összesen 10 elem esetén).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 ClassDeklarálhat egy osztályt
simpleListaz értékek listájánakIntegertárolásához, egy másik osztályt az értékek listájánakStringtárolásához, egy másikat pedig az értékek tárolásáhozDate. A listatagok adattípusán kívül az összes ilyen osztályból létrehozott objektumok ugyanúgy viselkednek.Az a típusargumentum, amelyet a kódkészletek
itemTypehasználata belső típus lehet, példáulBooleanvagyDouble, struktúra, enumerálás vagy bármilyen osztálytípus, beleértve az alkalmazás által definiált típust is.Az osztályt
simpleListaz alábbi kóddal tesztelheti.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