温馨提示×

c# lambda怎么使用外部变量

小亿
157
2024-01-18 20:47:14
栏目: 编程语言

在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表达式可以通过引用捕获或值捕获来实现,具体取决于变量的类型和需求。

0