Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否未执行带函数(x)的VB.NET Linq表达式?_Vb.net_Linq - Fatal编程技术网

是否未执行带函数(x)的VB.NET Linq表达式?

是否未执行带函数(x)的VB.NET Linq表达式?,vb.net,linq,Vb.net,Linq,为什么这会像预期的那样起作用: list.ForEach(sub(x) x.Name = "New Name") 但这不是: list.ForEach(function(x) x.Name = "New Name") 当您使用功能关键字时,是否还有人感到困惑? list.ForEach(Function(x) x.Name = "New Name") 您正在创建一个函数,该函数接受名为x的参数并返回bool(在本例中) 因此,在这种情况下,=不是赋值运算符,而是比较运算符,因此名称属性不会

为什么这会像预期的那样起作用:

list.ForEach(sub(x) x.Name = "New Name")
但这不是:

list.ForEach(function(x) x.Name = "New Name")

当您使用
功能
关键字时,是否还有人感到困惑?

list.ForEach(Function(x) x.Name = "New Name")
您正在创建一个函数,该函数接受名为
x
的参数并返回
bool
(在本例中)

因此,在这种情况下,
=
不是赋值运算符,而是比较运算符,因此
名称
属性不会更改。 (由于比较运算符,编译器推断函数返回
bool

相当于

list.ForEach(sub(x) Foobar(x))

...

Function Foobar(x as Foo) As Boolean
    Return x.Name = "New Name" 'returns a boolean'
End Function
ForEach将不返回值的操作(Sub)而不是返回值的Func(函数)作为参数


在VB中,=符号是不明确的。它既可以用于比较,也可以用于赋值。因此,为了消除语句的歧义,
x.Name=“New Name”
团队使用指标子项或函数来确定这是比较还是赋值。对于
Sub(x)x.Name=“New Name”
,您正在执行赋值,或者将x的Name参数的值设置为“New Name”。在
函数(x)x.Name=New“Name”
的情况下,如果x的Name参数与“New Name”相同,则进行比较并返回。因此,在使用Sub和Function时必须小心。

请展示一个简短但完整的程序来演示问题。请说明您的期望以及实际发生的情况。请参阅:()您的foobar函数未指定返回值