我该如何在VB.NET中声明嵌套函数?

13

我该如何在VB.NET中声明嵌套函数?例如,我想做这样的事情:

Function one()
    Function two()
    End Function
End Function

然而,在VB.NET中,这个语句是无效的,因为函数没有关闭。

3个回答

21

你是在询问如何编写lambda表达式吗?

Lambda表达式是一个没有名称的函数或子程序,可以在委托有效的任何地方使用。Lambda表达式可以是函数或子程序,可以是单行或多行。你可以将当前范围内的值传递给lambda表达式。

创建lambda表达式时,需要使用Function或Sub关键字,就像创建标准函数或子程序一样。但是,lambda表达式包含在一个语句中。

例如,以下代码将输出“Hello World!”:

Dim outputString As Action(Of String) = Sub(x As String)
                                            Console.WriteLine(x)
                                        End Sub
outputString("Hello World!")

更多示例请参见此处:VB.NET Lambda Expression


3
需要使用VB10才能支持“Sub”lambdas。 - Hans Passant
2
VB10也需要用于多行函数lambda。 - MarkJ

3

正如您所指出的那样,这是不可能的。

您有几个选择:

  • Function two作为同一类中的私有函数,因此可以从Function one调用它。
  • 在该类上创建一个嵌套类或结构体,同样是私有的,并在其上调用方法。

1
澄清一下,这两个选项都不允许嵌套函数所允许的通过名称引用局部变量(无需显式地将它们作为参数传递)。Lambda函数是(现在)的解决方案。对于所提出的问题,创建一个本地变量并为其分配一个lambda函数(如Cody所示)为该函数提供了一个本地名称。 - ToolmakerSteve

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接