簡體   English   中英

為什么子簽名中有2()?

[英]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值的,所以您沒有后期綁定或類型轉換。 這樣可以節省執行時間並減少運行時錯誤。

VB.NET以多種不同方式使用括號:

  • 方法聲明或方法調用的參數部分(與C#相同)
  • 聲明泛型 (相當於C#中的<>)
  • 聲明和索引數組 (相當於C#中的[])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM