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

Not*_*iso 8 .net vb.net function nested-function

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

Function one()
    Function two()
    End Function
End Function
Run Code Online (Sandbox Code Playgroud)

但是,由于未封闭的功能,此声明在VB.NET中无效.

Cod*_*ray 17

你在问如何写一个lambda表达式吗?

lambda表达式是一个没有名称的函数或子例程,可以在委托有效的任何地方使用.Lambda表达式可以是函数或子例程,可以是单行或多行.您可以将当前作用域中的值传递给lambda表达式.

您可以使用Function或Sub关键字创建lambda表达式,就像创建标准函数或子例程一样.但是,lambda表达式包含在语句中.

例如,以下代码将打印"Hello World!":

Dim outputString As Action(Of String) = Sub(x As String)
                                            Console.WriteLine(x)
                                        End Sub
outputString("Hello World!")
Run Code Online (Sandbox Code Playgroud)

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

  • 'Sub'lambdas需要VB10. (3认同)
  • VB10还需要多行函数lambdas (2认同)

Ode*_*ded 3

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

您有多种选择

  • Function two同一个类中的私有函数,因此您可以从Function one.
  • 在类上创建一个嵌套类或结构(同样是私有的),然后调用其方法。