开发者

VB.NET: Lambda expression, use assignment operator instead of equality

开发者 https://www.devze.com 2023-01-22 00:54 出处:网络
I have a method that takes an System.Action, this is what I\'m trying to feed it: Function() Me._existingImports = Me.GetImportedAds()

I have a method that takes an System.Action, this is what I'm trying to feed it:

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

The thing is that it complains about the = sign since it thinks I'm trying to do a comparison, which I'm not. I want to assign the Me._existingImports the value of Me.GetImportedAds(), but VB.NET complains about DataTable not having a = operator.

How can I force it to use the assignment operator instead of the equality operator?

In C# this works perfectly fine:

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

For now the solution w开发者_运维知识库ill be to use a standalone method, but that's way more code than needed.


When using Function(), you really define an anonymous function which means you map values to values.

Therefore Function() strictly needs an expression (like x or 42 ...) as the body, which an assignment is not! (Assignments don't evaluate to values like in C-style languages in VB)

Thus what you need is not a Function() but a Sub(), which contains statements (actions) rather than values.

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

C# doesn't distinguish here, the (much nicer) ... => ... syntax covers it all.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号