VB.NET:Lambda表达式,使用赋值运算符而不是相等

时间:2010-10-27 13:24:46

标签: vb.net

我有一个采用System.Action的方法,这就是我想要的东西:

Function() Me._existingImports = Me.GetImportedAds()

事情是,它抱怨=符号,因为它认为我正在尝试进行比较,我不是。我想为Me.GetImportedAds()分配Me._existingImports,但VB.NET抱怨DataTable没有=运算符。

如何强制它使用赋值运算符而不是相等运算符?

在C#中,这非常合适:

() => this.existingImports = this.GetImportedAds()

目前解决方案是使用一个独立的方法,但这需要的代码多于所需的代码。

1 个答案:

答案 0 :(得分:8)

使用Function()时,您确实定义了一个匿名函数,这意味着您将值映射到值。

因此,Function()严格需要一个表达式(如x42 ...)作为正文,其中的作业不是! (作业不会评估为VB中的C风格语言中的值)

因此,您需要的不是Function()而是Sub(),它包含语句(操作)而不是值。

Sub() Me._existingImports = Me.GetImportedAds()

C#在这里没有区别,(更好的)... => ...语法涵盖了所有内容。