vb.net - VB.NET 有匿名函数吗?

标签 vb.net anonymous-methods

从我在谷歌上可以找到的,VB.NET 只有单语句 lambdas,而不是多语句匿名函数。但是,我阅读的所有文章都在谈论旧版本的 VB.NET,我找不到比 vs2008 beta 1 或 2 更新的内容。

所以问题是:我怎样才能在 VB.NET 中做到这一点?

C#代码:

private void HandleErrors( Action codeBlock ){
    try{
        codeBlock();
    }catch(Exception e){
        //log exception, etc
    }
}

HandleErrors(() => {
    var x = foo();
    x.DoStuff();
    etc
});

最佳答案

它在 VB10 中:

Dim food = New With {
    .ID = 1,
    .Name = "Carrot",
    .Type = (
        Function(name As String)
            If String.IsNullOrEmpty(name) Then Return String.Empty

            Select Case name.ToLower()
                Case "apple", "tomato": Return "Fruit"
                Case "potato": Return "Vegetable"
            End Select

            Return "Meat"
        End Function
    )(.Name)
}
Dim type = food.Type

或者,对应于您的代码:
Sub HandleErrors(codeBlock As Action)
    Try
        codeBlock()
    Catch e As Exception
        ' log exception, etc.
    End Try
End Sub

HandleErrors(Sub()
        Dim x = foo()
        x.DoStuff()
        ' etc.
    End Sub)

关于vb.net - VB.NET 有匿名函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/671631/

相关文章:

javascript - 为什么它说 jqxchart 输入数据数组的格式不正确?

c# - 好的,这有效。究竟是什么?

c# - 如何将 ValueTuple 命名功能与匿名方法一起使用?

c - 什么是 int cost[N] 在 vi​​sual basic 中

vb.net - 如何允许用户在 vb.net 的文本框中只输入数字?

vb.net - 更改循环内循环的结束整数

vb.net - 在数组 vb.net 2005 中检测重复数字的最快方法

c# - 如何取消注册 'anonymous' 事件处理程序

javascript - Javascript 匿名函数内部的作用域

c# - 将此委托(delegate)转换为匿名方法或 lambda