Lambda C#怎样捕获外部变量

avatar
作者
猴君
阅读量:0

在 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 表达式执行时仍然有效。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!