VB.NET语言 泛型委托 Action/Func ?

VB.NET阿木 发布于 2025-05-28 16 次阅读


VB.NET中的泛型委托(Action/Func)详解与示例

在VB.NET编程中,泛型委托是C委托的一个扩展,它允许开发者创建更灵活、可重用的代码。委托是一种引用类型,用于指向方法。泛型委托则进一步允许这些方法操作特定类型的参数和返回值。本文将围绕VB.NET中的泛型委托(Action/Func)进行详细介绍,包括其定义、使用方法以及一些实用的示例。

一、泛型委托的定义

泛型委托是VB.NET中的一种特殊类型,它允许你创建一个可以接受任何类型参数的委托。在VB.NET中,有两个主要的泛型委托:`Action` 和 `Func`。

- `Action`:无返回值的委托。
- `Func`:有返回值的委托。

泛型委托的定义格式如下:

vb
Public Delegate Sub Action(Of T)()
Public Delegate Function Func(Of T, TResult)() As TResult

这里的 `Of T` 表示这是一个泛型类型参数,`T` 可以被替换为任何具体的类型。

二、泛型委托的使用

1. 创建泛型委托

要创建一个泛型委托,你需要定义一个方法,该方法的签名与委托的签名相匹配。以下是一个创建 `Action` 委托的示例:

vb
Sub PrintMessage(ByVal message As String)
Console.WriteLine(message)
End Sub

Dim action As Action(Of String) = New Action(Of String)(AddressOf PrintMessage)

在这个例子中,我们定义了一个名为 `PrintMessage` 的方法,它接受一个 `String` 类型的参数。然后我们创建了一个 `Action(Of String)` 类型的委托 `action`,并将其与 `PrintMessage` 方法关联起来。

2. 调用泛型委托

调用泛型委托与调用普通委托类似。以下是如何调用上面创建的 `action` 委托:

vb
action("Hello, World!")

这将输出:


Hello, World!

3. 创建泛型 `Func` 委托

创建 `Func` 委托与创建 `Action` 委托类似,只是 `Func` 委托有一个返回值。以下是一个创建 `Func` 委托的示例:

vb
Function GetSquare(ByVal number As Integer) As Integer
Return number number
End Function

Dim func As Func(Of Integer, Integer) = New Func(Of Integer, Integer)(AddressOf GetSquare)

在这个例子中,我们定义了一个名为 `GetSquare` 的方法,它接受一个 `Integer` 类型的参数并返回一个 `Integer` 类型的结果。然后我们创建了一个 `Func(Of Integer, Integer)` 类型的委托 `func`,并将其与 `GetSquare` 方法关联起来。

4. 调用泛型 `Func` 委托

调用 `Func` 委托并获取返回值:

vb
Dim result As Integer = func(5)
Console.WriteLine(result)

这将输出:


25

三、泛型委托的扩展

VB.NET还允许你创建自定义的泛型委托,以便更精确地控制委托的行为。以下是一个自定义泛型委托的示例:

vb
Public Delegate Sub CustomAction(Of T)(ByVal item As T)

在这个例子中,我们创建了一个名为 `CustomAction` 的泛型委托,它接受一个 `T` 类型的参数。然后我们可以定义一个方法,该方法的签名与 `CustomAction` 委托相匹配:

vb
Sub ProcessItem(ByVal item As String)
Console.WriteLine("Processing item: " & item)
End Sub

Dim customAction As CustomAction(Of String) = New CustomAction(Of String)(AddressOf ProcessItem)
customAction("Custom item")

这将输出:


Processing item: Custom item

四、总结

泛型委托是VB.NET中一个非常有用的特性,它允许开发者创建更灵活、可重用的代码。通过使用泛型委托,你可以轻松地编写可以处理任何类型参数的方法,从而提高代码的可读性和可维护性。本文介绍了泛型委托的定义、使用方法以及一些实用的示例,希望对读者有所帮助。