Как мне объявить вложенную функцию в VB.NET? - PullRequest
7 голосов
/ 09 января 2011

Как бы я объявил вложенную функцию в VB.NET?Например, я хочу сделать что-то вроде этого:

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

Однако этот оператор недопустим в VB.NET из-за незамкнутой функции.

Ответы [ 2 ]

17 голосов
/ 09 января 2011

Вы спрашиваете, как написать лямбда-выражение ?

Лямбда-выражение - это функция или подпрограмма без имени, которую можно использовать везде, где действителен делегат. Лямбда-выражения могут быть функциями или подпрограммами и могут быть однострочными или многострочными. Вы можете передавать значения из текущей области в лямбда-выражение.

Вы создаете лямбда-выражения, используя ключевое слово Function или Sub, так же, как вы создаете стандартную функцию или подпрограмму. Однако лямбда-выражения включены в оператор.

Например, следующий код выведет «Hello World!»:

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

Дополнительные примеры см. Здесь: Лямбда-выражение VB.NET

3 голосов
/ 09 января 2011

Как вы заметили, это невозможно.

У вас есть несколько вариантов

  • имеет Function two частную функцию в том же классе, поэтому ее можно вызывать с Function one.
  • Создайте вложенный класс или структуру в классе, опять же закрытый, и вызовите методы для этого.
...