none
關於 微軟文件庫的泛型問題 RRS feed

解答

  •         Dim item As New temp(Of String)(2) 

    你這一句是直接指定長度為3,這個時候會用以下這個建構子做初始化,所以你才能加三個值進去。
            Public Sub New(ByVal i As Integer)
                MyBase.New()
                temps = New tt(i) {}
                count = 0
            End Sub

    如果你是用預設建構子的話,長度就會限定在2,你給的那個連結就有寫了


    參數化建構函式允許使用程式碼來設定 <tt>items</tt> 的上限 (Upper Bound),而預設建構函式則將這個項目設定成 9 (總共是 10 個項目)。
    • 已標示為解答 ㄎㄎ 2009年12月18日 上午 08:08
    2009年12月18日 上午 07:52

所有回覆

  • 意思是呼叫另一個建構子來初始化類別

    2009年12月18日 上午 06:57
  • Hi!
    你提供的網址中有這段話

    下列範例會定義用於管理極簡單清單的類別。它會將清單保留在內部陣列items中,而透過使用的程式碼則可以宣告清單項目的資料型別。參數化建構函式允許使用程式碼來設定 items的上限 (Upper Bound),而預設建構函式則將這個項目設定成 9 (總共是 10 個項目)。


      Public Sub New()
         Me.New(9)  ' 初始化建構函式則將這個項目設定成 9 (總共是 10 個項目)。
      End Sub


      Public Sub New(ByVal t As Integer)
        MyBase.New()
        items = New itemType(t) {}
        top = t
        nextp = 0
      End Sub


    我的Blog .NET菜鳥自救會
    2009年12月18日 上午 06:58
    版主
  • 那這樣的意思就是說假如我設成1的話(總共是 2 個項目)。
    但是我測試三個數值他還是可以跑的出來耶
    2009年12月18日 上午 07:02
  • ...........你測錯了吧
    都限定陣列長度為2了,怎麼可能加三個值進去
    2009年12月18日 上午 07:39
  • Public Class Form1
        Public Class temp(Of tt)
            Public temps() As tt
            Public count As Integer
            Public Sub New()
                Me.New(1)
            End Sub
            Public Sub New(ByVal i As Integer)
                MyBase.New()
                temps = New tt(i) {}
                count = 0
    
            End Sub
            Public Sub add(ByVal s As tt)
                insert(s, count)
            End Sub
            Private Sub insert(ByVal s As tt, ByVal te As Integer)
                temps(te) = s
                count += 1
    
            End Sub
             Public ReadOnly Property tempslength()
                Get
                    Return count
    
                End Get
            End Property
            Public ReadOnly Property tempcount(ByVal i As Integer) As tt
                Get
                    Return temps(i)
    
                End Get
            End Property
    
        End Class
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim item As New temp(Of String)(2)
            item.add("小名")
            item.add("黃大狼")
            item.add("張小花")
            
            Dim s As String = "目前長度共有"& item.tempslength & vbCrLf & item.tempcount(0) & vbCrLf & item.tempcount(1) & vbCrLf & item.tempcount(2)
            MsgBox(s)
    
    
        End Sub
    End Class
    陣列長度如果沒有記錯的話
    應該是
    Dim item As New temp(Of String)(2)
     item.add("小名")
     item.add("黃大狼")
     item.add("張小花")
    2009年12月18日 上午 07:47
  •         Dim item As New temp(Of String)(2) 

    你這一句是直接指定長度為3,這個時候會用以下這個建構子做初始化,所以你才能加三個值進去。
            Public Sub New(ByVal i As Integer)
                MyBase.New()
                temps = New tt(i) {}
                count = 0
            End Sub

    如果你是用預設建構子的話,長度就會限定在2,你給的那個連結就有寫了


    參數化建構函式允許使用程式碼來設定 <tt>items</tt> 的上限 (Upper Bound),而預設建構函式則將這個項目設定成 9 (總共是 10 個項目)。
    • 已標示為解答 ㄎㄎ 2009年12月18日 上午 08:08
    2009年12月18日 上午 07:52
  • 謝謝妳
    我真的太笨了
    2009年12月18日 上午 08:08