活动
如何:编写扩展方法 (Visual Basic)
使用扩展方法可以将方法添加到现有类。 可以像调用该类的实例一样调用扩展方法。
在 Visual Studio 中打开新的或现有 Visual Studio 应用程序。
在要定义扩展方法的文件顶部,添加以下 import 语句:
VBImports System.Runtime.CompilerServices
在新的或现有应用程序中的模块内,使用
<Extension>
属性开始定义方法:VB<Extension()>
请注意,
Extension
属性只能应用于 Visual Basic 模块中的方法(Sub
或Function
过程)。 如果将该属性应用于Class
或Structure
中的方法,则 Visual Basic 编译器会生成错误 BC36551“只能在模块中定义扩展方法”。以普通方式声明方法,只不过第一个参数的类型必须是要扩展的数据类型。
VB<Extension()> Public Sub SubName(para1 As ExtendedType, <other parameters>) ' < Body of the method > End Sub
以下示例在模块 StringExtensions
中声明扩展方法。 第二个模块 Module1
将导入 StringExtensions
并调用该方法。 调用扩展方法时,该方法必须在作用域内。 扩展方法 PrintAndPunctuate
将为 String 类扩展一个方法,该方法显示字符串实例,后跟作为参数发送的标点符号字符串。
' Declarations will typically be in a separate module.
Imports System.Runtime.CompilerServices
Module StringExtensions
<Extension()>
Public Sub PrintAndPunctuate(aString As String, punc As String)
Console.WriteLine(aString & punc)
End Sub
End Module
' Import the module that holds the extension method you want to use,
' and call it.
Imports ConsoleApplication2.StringExtensions
Module Module1
Sub Main()
Dim example = "Hello"
example.PrintAndPunctuate("?")
example.PrintAndPunctuate("!!!!")
End Sub
End Module
请注意,该方法使用两个参数进行定义,并且只使用一个参数进行调用。 方法定义中的第一个参数 aString
绑定到 example
,后者是调用该方法的 String
的实例。 示例的输出如下所示:
Hello?
Hello!!!!
其他资源
培训
文档
-
详细了解:扩展方法 (Visual Basic)
-
详细了解:如何:调用扩展方法 (Visual Basic)
-
如何:使用对象初始值设定项声明对象 - Visual Basic
详细了解:如何:使用对象初始值设定项声明对象 (Visual Basic)