C#のラムダ式で外部変数を使用する方法は?

C#の場合、lambda式で外部変数を使用するには、変数をキャプチャする方法を使用できます。変数をキャプチャする方法には2つの方法があります。

1. 外部変数を使用するとき、ラムダ式では参照キャプチャが使用されます。これは、ラムダ式の外部で変数の値が変更された場合、ラムダ式内でもそれが反映されることを意味します。

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

2. 使用値の捕獲:ラムダ式で外部変数を使用する場合、変数の現在の値が捕捉されます。これは、ラムダ式の外部で変数の値が変更された場合、ラムダ式には影響されないということを意味します。

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

引用型の変数に関しては、参照キャプチャを使用するか値キャプチャを使用するかに関わらず、変数の参照がキャプチャされることに注意が必要です。つまり、ラムダ式で参照型変数の属性やフィールドを変更すると、元の変数に影響を与えることになります。

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

以上のように、外部変数を使用するラムダ式は、参照キャプチャまたは値キャプチャを使用して実装することができます。具体的な方法は、変数の種類や要件によって異なります。

bannerAds