Aracılığıyla paylaş


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

  1. Sınıf normal şekilde tanımlayın.

  2. Ekleme (Oftypeparameter) sonra hemen bir tür parametresi belirtmek için sınıf adı. 

  3. Birden fazla tür parametresi varsa, virgülle ayrılmış bir liste parantez içinde olun.Yinelenmeyen Of anahtar sözcüğü.

  4. 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).

  5. 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.

  6. 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)

Başvuru

Of Tümcesi (Visual Basic)

Tür Listesi (Visual Basic)

Nesne Veri Türü

Kavramlar

Visual Basic'de Veri Türleri

Visual Basic'de Genel Türler (Visual Basic)

Dil Bağımsızlığı ve Dilden Bağımsız Bileşenler