|
|
1
10
第一个例子的情况是元音的值被捕获到一个局部(for循环的范围)变量中。
但是,在第二个类中,它不捕获当前值,只捕获要使用的变量,因此,由于此变量发生变化,每次执行循环时,您都会在上一个Where子句的基础上构建一个新的Where子句,但由于您更改了变量,您也会修改前面的所有子句。 因此,在第一个示例中,您得到了这种类型的查询:
在执行第二个示例时
在使用匿名方法/lambda时,捕获变量是我们都会遇到的问题之一,您可以在此处阅读更多相关内容: C# In Depth: The Beauty of Closures . ,你会发现这种行为的一些例子。 |
|
|
2
1
事实上,重读它,它是有意义的。 使用temp变量意味着在查询中捕获temp本身。。。我们对循环进行了五次评估,因此每个查询版本都有五个实例化的temp变量引用。 在没有temp变量的情况下,只有循环变量的引用。
在第一种情况下,一旦对循环进行了完整的计算,查询就使用了对temp变量的五个引用,从而分别剥离出a、e、i、o和u。 在第二种情况下,它也在做同样的事情。。。只有所有五个引用都指向同一个变量,该变量显然只包含一个值。
那么,现在这对其他人有意义吗? |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |