[英]Why there are 2 () in a sub signature?
最近我問了一個問題並得到了有效的答案。 下面的代碼是工作代碼。 我在理解Sub簽名時遇到問題。 為什么子有兩個()()。 我的意思是我不理解第一個(Of Algorithm As SymmetricAlgorithm)
。 顯然,第二個參數是針對參數的。 您能指出我在哪里可以了解更多信息嗎?
Public Shared Sub DecryptTo(Of Algorithm As SymmetricAlgorithm)(sourceStream As Stream, stream As Stream, password As String)
Dim pdb = GetPassword(password)
Using alg = Activator.CreateInstance(Of Algorithm)()
Using trans = alg.CreateDecryptor(pdb.GetBytes(alg.KeySize / 8), pdb.GetBytes(16))
Using cStream = New CryptoStream(sourceStream, trans, CryptoStreamMode.Read)
cStream.CopyTo(stream)
End Using
End Using
End Using
End Sub
在http://msdn.microsoft.com/zh-cn/library/w256ka79(v=vs.80).aspx上,可以找到對泛型的描述(這是第一組括號的原因)。
開始:
通用類型是單個編程元素,適用於對各種數據類型執行相同的功能。 定義通用類或過程時,不必為可能要執行該功能的每種數據類型定義單獨的版本。
一個類比是帶有可移動頭的螺絲刀。 您檢查需要轉動的螺釘,並為該螺釘選擇正確的頭部(開槽,划線,加星號)。 將正確的頭插入螺絲起子手柄后,即可使用螺絲起子執行完全相同的功能,即旋轉螺絲。
螺絲刀設置為通用工具
定義通用類型時,可以使用一種或多種數據類型對其進行參數化。 這允許使用代碼根據其要求定制數據類型。 您的代碼可以從通用元素聲明幾個不同的編程元素,每個元素都作用於一組不同的數據類型。 但是,無論它們使用的是哪種數據類型,聲明的元素都執行相同的邏輯。
例如,您可能想創建和使用對特定數據類型(例如String)進行操作的隊列類。 您可以從System.Collections.Generic.Queue聲明這樣的類,如以下示例所示。
VB公共stringQ作為新的System.Collections.Generic.Queue(字符串)
現在,您可以使用stringQ專門處理String值。 因為stringQ是特定於String的,而不是泛化為Object值的,所以您沒有后期綁定或類型轉換。 這樣可以節省執行時間並減少運行時錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.