¿Cómo declaro una función anidada en VB.NET?

¿Cómo declararía una función anidada en VB.NET? Por ejemplo, quiero hacer algo como esto:

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

Sin embargo, esta declaración no es válida en VB.NET debido a una función no cerrada.

preguntado el 09 de enero de 11 a las 09:01

2 Respuestas

¿Estás preguntando cómo escribir un expresión lambda?

Una expresión lambda es una función o subrutina sin un nombre que se puede usar siempre que un delegado sea válido. Las expresiones lambda pueden ser funciones o subrutinas y pueden ser de una o varias líneas. Puede pasar valores del ámbito actual a una expresión lambda.

Puede crear expresiones lambda utilizando la palabra clave Function o Sub, al igual que crea una función o subrutina estándar. Sin embargo, las expresiones lambda se incluyen en una declaración.

Por ejemplo, el siguiente código imprimirá "¡Hola mundo!":

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

Para obtener más ejemplos, consulte aquí: Expresión Lambda de VB.NET

Respondido el 20 de junio de 20 a las 12:06

Se requiere VB10 para lambdas 'Sub'. - Hans Passant

VB10 también se requiere para lambdas de función de múltiples líneas - MarkJ

Como ha señalado, esto no es posible.

Tienes varias opciones

  • tener Function two ser una función privada dentro de la misma clase, por lo que puede llamarla desde Function one.
  • Cree una clase o estructura anidada en la clase, nuevamente privada, y llame a métodos en eso.

Respondido el 09 de enero de 11 a las 12:01

Para aclarar, ninguna de esas opciones permite qué anidado permite la función, que se refiere a las variables locales por su nombre (sin tener que pasarlas explícitamente como parámetros). Las funciones lambda son (ahora) la solución. Para la pregunta tal como se hizo, crear una variable local y asignarle una función lambda, como muestra Cody, proporciona un nombre local para esa función. - ToolmakerSteve

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.