VB.NET是否具有匿名功能?

Ori*_*rds 15 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
});
Run Code Online (Sandbox Code Playgroud)

小智 29

它在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
Run Code Online (Sandbox Code Playgroud)

  • 很好的例子......虽然我没有意识到胡萝卜是肉:) (8认同)

Den*_*ler 18

Visual Basic .NET只有lambda表达式.

它不支持当前版本中的"匿名委托",尽管它会在VS2010中(以及在多行上).

现在唯一的选择是在某处声明您的方法并使用Addressof运算符传递它.


Dus*_*ell 9

VB9只有单行匿名函数.我们在VB10中添加完整语句和多行lambdas.