c# lambda怎么使用外部变量

avatar
作者
筋斗云
阅读量:0

在C#中,如果要在lambda表达式中使用外部变量,可以通过捕获变量的方式来实现。有两种方式可以捕获变量:

1.使用引用捕获:在lambda表达式中使用外部变量时,会以引用的方式来捕获变量。这意味着,如果在lambda表达式外部修改了变量的值,那么在lambda表达式中也会反映出来。

int x = 10; Action action = () => Console.WriteLine(x); x = 20; action(); // 输出结果为20 

2.使用值捕获:在lambda表达式中使用外部变量时,会以值的方式来捕获变量的当前值。这意味着,如果在lambda表达式外部修改了变量的值,那么在lambda表达式中不会受到影响。

int x = 10; Action action = () => {     int y = x;     Console.WriteLine(y); }; x = 20; action(); // 输出结果为10 

需要注意的是,对于引用类型的变量,无论是使用引用捕获还是值捕获,都会捕获变量的引用。这意味着,如果在lambda表达式中修改了引用类型变量的属性或字段,会影响到原始变量。

List<int> numbers = new List<int> { 1, 2, 3 }; Action action = () => {     numbers.Add(4);     Console.WriteLine(numbers.Count); }; action(); // 输出结果为4 Console.WriteLine(numbers.Count); // 输出结果为4 

综上所述,使用外部变量的lambda表达式可以通过引用捕获或值捕获来实现,具体取决于变量的类型和需求。

广告一刻

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