【问题标题】:Does VB.NET and Visual Studio 2010 support multiline anonymous method?VB.NET 和 Visual Studio 2010 是否支持多行匿名方法?
【发布时间】:2010-10-05 14:49:28
【问题描述】:

我发现在 VS2010 真正发布之前,this answer 被问及回答了。

他们这么说

VB9 只有单行匿名 职能。我们正在添加完整的声明 和 VB10 中的多行 lambda。

但我尝试添加此代码

 Dim test2 = Function(t1 As T, t2 As T) (
 Dim val1 As IComparable = DirectCast(prop.GetValue(t1), IComparable)
 Dim val2 As IComparable = DirectCast(prop.GetValue(t2), IComparable)
 Return val1.CompareTo(val2)
 )

到 Visual Studio 2010 中的 .NET Framework 4.0 项目,但无法编译。

你现在是否真的实现了这个功能以及我做错了什么?

【问题讨论】:

    标签: vb.net visual-studio-2010 .net-4.0


    【解决方案1】:

    我相信您只是缺少“结束功能”行。试试这个:

     Dim test2 = (Function(t1 As T, t2 As T)
     Dim val1 As IComparable = DirectCast(prop.GetValue(t1), IComparable)
     Dim val2 As IComparable = DirectCast(prop.GetValue(t2), IComparable)
     Return val1.CompareTo(val2)
     End Function)
    

    【讨论】:

    • 哦,谢谢!抱歉这个愚蠢的问题,今天办公室可能太热了:D。
    • 哈哈!一点都不傻!一周前我遇到了完全相同的问题。
    【解决方案2】:

    您缺少End Function 并且您试图将函数体括在括号中,这是错误的。这应该有效:

    Dim test2 = Function(t1 As T, t2 As T)
        Dim val1 As IComparable = DirectCast(prop.GetValue(t1), IComparable)
        Dim val2 As IComparable = DirectCast(prop.GetValue(t2), IComparable)
        Return val1.CompareTo(val2)
    End Function
    

    此处记录了此功能:

    【讨论】:

      【解决方案3】:

      这里有一些你可能会觉得有用的东西。注意声明的方法是如何被立即调用的。

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-05
        • 2010-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多