温馨提示×

Lambda C#怎样捕获外部变量

c#
小樊
109
2024-07-24 20:52:14
栏目: 编程语言

在 Lambda 表达式中,可以通过捕获外部变量来访问外部作用域中的变量。在 C# 中,Lambda 表达式捕获外部变量的方式有两种:

  1. 隐式捕获:Lambda 表达式可以隐式地捕获外部变量,即直接引用外部变量而不需要额外的语法。例如:
int x = 10;
Func<int, int> func = y => x + y;
Console.WriteLine(func(5)); // 输出 15

在这个例子中,Lambda 表达式捕获了外部变量 x,并在表达式中使用了它。

  1. 显示捕获:如果需要在 Lambda 表达式中修改外部变量的值,需要使用 refout 关键字来显示地捕获外部变量。例如:
int x = 10;
Action<int> action = (ref int y) => y += x;
int result = 5;
action(ref result);
Console.WriteLine(result); // 输出 15

在这个例子中,Lambda 表达式使用 ref 关键字显示地捕获了外部变量 result,并修改了它的值。

需要注意的是,捕获外部变量时需要注意外部变量的生命周期,确保外部变量在 Lambda 表达式执行时仍然有效。

0