使用泛型程式簡化代碼設計

來源:互聯網
上載者:User

 在程式設計中,本人遇到這樣一個問題,為了顯示介面的需要把各個功能塊寫成"使用者控制項" ,並在splitcontainer控制項的panel2中顯示,顯示的代碼如下:

 If Me.kj.Panel2.Controls.Count = 0 Then

           Dim show_part As gl_byb    ’glby 就是要顯示的使用者控制項

           show_part = New gl_byb     ‘執行個體化控制項
           Me.kj.Panel2.Controls.Add(show_part)   ’添加到Panel2中
           show_part.Dock = DockStyle.Fill
           show_part.Visible = True
        Else
            MsgBox("請先關閉當前視窗", MsgBoxStyle.Critical, "提 示")
End If

問題來了:總共有幾十個功能模組要顯示,難道要把上面的代碼重複幾十遍?!
從上面代碼中我們可以看到在反覆是紅用中真正需要變化的只有“gl_byb”這個使用者控制項類,怎樣才能簡化代碼呢?

實際上我們可以使用泛型程式來達到目的。首先定義一個同樣的顯示模組Display,如下:

  Private Sub Display()(Of T As {New, System.Windows.Forms.Control})()        If Me.kj.Panel2.Controls.Count = 0 Then
            Dim show_part As T
            show_part = New T
            Me.kj.Panel2.Controls.Add(show_part)
            show_part.Dock = DockStyle.Fill
            show_part.Visible = True
        Else
            MsgBox("請先關閉當前視窗", MsgBoxStyle.Critical, "提 示")
        End If
    End Sub

 

代碼中“Private Sub Display()(Of T As {New, System.Windows.Forms.Control})() ” 的含義是:

Of T 表示傳遞一個型別參數;
As {New, System.Windows.Forms.Control} 表示 對這個泛型程式進行約束,條件有兩條:1.可以使用New ** 的無參數的方式執行個體化類;2.這個類型是基於System.Windows.Forms.Control類的

這樣我們就定義了一個可以反覆使用的顯示代碼,在具體的按鈕事件中我們只需要調用這個泛型程式就可以了!調用的代碼如下:

  Display(Of gl_byb)() ‘傳遞的類型是“gl_byb”

通過這個例子我們看到,如果我們需要傳遞類型的時候可以使用泛型程式來完成!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.