Asp.net - 泛型Generic (小技巧)

簡單的泛型介紹,快速了解泛型的優點,讓泛型代替冗長的多載。

在開始說明之前,用一個簡單例子表達,以下程式是希望做到參數的值做交換

以往的程式設計方式,我都用利用多載的方式,建立兩個Swap 的程序去執行,

 


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


        Dim S1 As Integer = 10
        Dim S2 As Integer = 20

        Swap(S1, S2)

        Response.Write(S1)
        Response.Write("<br>")
        Response.Write(S2)


        Dim S3 As String = "豬"
        Dim S4 As String = "羊"

        Swap(S3, S4)

        Response.Write("<br>")
        Response.Write(S3)
        Response.Write("<br>")
        Response.Write(S4)
    End Sub

    Sub Swap(ByRef A As String, ByRef B As String)
        Dim temp As String
        temp = A
        A = B
        B = temp
    End Sub

    Sub Swap(ByRef A As Integer, ByRef B As Integer)
        Dim temp As Integer
        temp = A
        A = B
        B = temp
    End Sub

 

 

採行泛型的方式


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim S1 As Integer = 10
        Dim S2 As Integer = 20

        Swap(S1, S2)

        Response.Write(S1)
        Response.Write("<br>")
        Response.Write(S2)

        Dim S3 As String = "豬"
        Dim S4 As String = "羊"

        Swap(S3, S4)

        Response.Write("<br>")
        Response.Write(S3)
        Response.Write("<br>")
        Response.Write(S4)
    End Sub

    Sub Swap(Of T)(ByRef A As T, ByRef B As T)
        Dim temp As T
        temp = A
        A = B
        B = temp
    End Sub

 

 

兩者顯示畫面都如下

 

程式當中的(Of T)指的就是一個泛型,我在程式碼中建立的一個泛型的方法,其參數也都是泛型

因此在呼叫時,我可以放各種的型別參數,當然我也可以建立泛型的類別、介面....等。

 

或許有人會說,我也不用多載也不用泛型,我只需將變數宣告為Object,多種型別的變數也可以兼容阿 ! 

這個說法是沒錯的,但是,資料在做轉型的動作的時候會比較消耗資源,採用多型就已經定義

了變數的型別,效能上會較為良好。

 

這裡我們可以了解到,當有兩者邏輯架構類似的方法,其實是可以用泛型取代多載,達到程式更精簡

,未來如果要更動邏輯的話,也可以只改一個地方就達成,詳細泛型的優點可參考官方說明

官方上有一系列的說明泛型。

 

但是有個限制,不可以在建構子上宣告型別參數哦(建構子不得為泛型)  !