gpt4 book ai didi

c# - C# 中 lambda 变量的作用域是什么?

转载 作者:IT王子 更新时间:2023-10-29 03:43:16 24 4
gpt4 key购买 nike

我对 lambda 变量的范围感到困惑,例如以下

var query = 
from customer in clist
from order in olist
.Where(o => o.CustomerID == customer.CustomerID && o.OrderDate == // line 1
olist.Where(o1 => o1.CustomerID == customer.CustomerID) // line 2
.Max(o1 => o1.OrderDate) // line 3
)
select new {
customer.CustomerID,
customer.Name,
customer.Address,
order.Product,
order.OrderDate
};

在第 1 行中,我声明了一个 lambda 变量“o”,这意味着我不能在第 2 行中再次声明它(或者如果我尝试这样做,至少编译器会提示)但即使“o1”已经存在,它也不会提示第 3 行??

lambda 变量的作用域是什么?

最佳答案

括号给出了线索​​ - lambda 变量在它声明的范围内被捕获:

.Where(o => ... olist.Where(o1 => ...).Max(o1 => ...))
// |----------------------------------------------| scope of o
// |---------| scope of first o1
// |---------| scope of second o1

请注意,两个 o1 变量没有重叠,但它们都重叠(或隐藏)o 变量,因此不能使用相同的名称。

关于c# - C# 中 lambda 变量的作用域是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10494074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com