Nasıl yapılır: Farklı Veri Türlerinde Aynı İşlevselliği Sağlayabilen Bir Sınıf Tanımlama (Visual Basic)
Bir sınıf tanımlayabilirsiniz gelen, farklı veri türlerinde aynı işlevi sağlayan nesneleri oluşturabilirsiniz.Bunu yapmak için bir veya daha fazla belirtmeniz Tür parametreleri tanımında.Sınıf sonra çeşitli veri türlerini kullanan nesneler için bir şablon olarak hizmet verebilir.Bu şekilde tanımlanmış bir sınıf adı verilen bir generic sýnýf.
Bir generic sýnýfý tanýmlamak avantajı, yalnızca bir kez tanımlamak ve kodunuzu, çok çeşitli veri türlerini kullanmak çok sayıda nesne oluşturmak için kullanabileceğiniz olmasıdır.Bu sınıf tanımlama'den daha iyi performans sonuçları Object türü.
Ayrıca sınıflar yanında tanımlamak ve genel yapıları, arabirimleri, yordamları ve temsilciler kullanabilirsiniz.
Bir sınıf türü parametresi ile tanımlamak için
Sınıf normal şekilde tanımlayın.
Ekleme (Oftypeparameter) sonra hemen bir tür parametresi belirtmek için sınıf adı.
Birden fazla tür parametresi varsa, virgülle ayrılmış bir liste parantez içinde olun.Yinelenmeyen Of anahtar sözcüğü.
Kodunuzu bir tür parametresi basit atama dışındaki işlemleri yapar, bu tür parametresi ile izleyin bir As bir veya daha fazla eklemek için yan kısıtlamaları.Bu tür parametresi için sağlanan türü aşağıdaki gibi bir gereksinimi karşılayan bir kısıtlama garanti eder:
Bir işlem gibi destekler >, kodunuzun gerçekleştiren
Kodunuzu erişen bir yöntem gibi bir üye destekler
Parametresiz oluşturucusu sunar
Herhangi bir kısıtlama belirtmezseniz, yalnızca operasyonlar ve kodunuzu kullanabilirsiniz üyeleri tarafından desteklenen olanlardır Nesne Veri Türü.Daha fazla bilgi için bkz. Tür Listesi (Visual Basic).
Sağlanan bir türle bildirilmesi gereken her sınıf üyesi tanımlamak ve bildirirken Astypeparameter. Bu, dahili depolama, yordam parametreleri ve dönüş değerleri için geçerlidir.
Kodunuzun yalnızca operasyonlar ve sağlamak için herhangi bir veri türü tarafından desteklenen yöntemleri kullandığından emin olun itemType.
Aşağıdaki örnek çok basit bir liste yöneten bir sınıfı tanımlar.İç dizisinde listesini tutan itemsve kod kullanarak liste öğelerini veri türü bildirmek.Parametreli bir kurucu kullanarak verir üst sınırını ayarlamak için kod items, ve bu varsayılan kurucu ayarlar (10 maddelik toplamı) 9.
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
Bir sınıftan bildirebilirsiniz simpleList listesini tutmak için Integer değerler listesini tutmak için başka bir sınıfı String değerler ve tutacak başka bir Date değerleri.Liste üyelerini veri türü dışında bu sınıflardan oluşturulan nesnelerin özdeş olarak davranır.
Kullanarak kod türü bağımsız değişkeni için sağladığı itemType gibi geçerli bir tür olabilir Boolean veya Double, bir yapı, bir numaralandırma veya sınıf, uygulamanızın tanımlayan bir de dahil olmak üzere her türlü.
Sınıf test edebilirsiniz simpleList yerine aşağıdaki kodu.
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
Ayrıca bkz.
Görevler
Nasıl yapılır: Genel Bir Sınıf Kullanma (Visual Basic)