簡單的泛型介紹,快速了解泛型的優點,讓泛型代替冗長的多載。
在開始說明之前,用一個簡單例子表達,以下程式是希望做到參數的值做交換
以往的程式設計方式,我都用利用多載的方式,建立兩個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,多種型別的變數也可以兼容阿 !
這個說法是沒錯的,但是,資料在做轉型的動作的時候會比較消耗資源,採用多型就已經定義
了變數的型別,效能上會較為良好。
這裡我們可以了解到,當有兩者邏輯架構類似的方法,其實是可以用泛型取代多載,達到程式更精簡化
,未來如果要更動邏輯的話,也可以只改一個地方就達成,詳細泛型的優點可參考官方說明,
官方上有一系列的說明泛型。
但是有個限制,不可以在建構子上宣告型別參數哦(建構子不得為泛型) !