【问题标题】:Annoumous Function In VB.netVB.net 中的匿名函数
【发布时间】:2012-08-12 14:11:26
【问题描述】:

我在 c# 中有以下代码行。

Check.ThatIsNotAnEmptyString(line1, () => { throw new InvalidAddressException("An address must have a street"); });

我很难将其转换为 vb.net。

我使用了转换工具“www.developerfusion.com”,但它会生成以下代码。

Check.ThatIsNotAnEmptyString(line1, Function() Throw New InvalidAddressException("An address must have a street") End Function)

它抱怨“投掷”一词表示预期的表达。

谁能告诉我是否可以将其转换为 vb.net。

【问题讨论】:

  • 旁注:这些工具似乎总是在委托、lambda 表达式、事件等方面失败......
  • 确实如此,这些转换器总是在您最需要它们的那种语句上产生垃圾。直到 VB10 才支持 lambda 表达式中的 Sub 关键字。回退是带有一点私有方法的 AddressOf。

标签: c# .net vb.net anonymous-methods


【解决方案1】:

你必须使用Sub,因为该函数没有返回值(就像C#中的void)。

另外,由于函数位于一行,因此您不需要End Sub/Function,它仅在多行函数中需要(并且在 .Net 4.0 中添加)。


所以你的代码应该是:

Check.ThatIsNotAnEmptyString(line1, Sub() Throw New InvalidAddressException("An address must have a street"))

【讨论】:

    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2011-12-29
    • 2014-11-11
    • 2012-03-22
    相关资源
    最近更新 更多