Lifetime of local variable declared inside a method is limited to the execution of that method. But in the following code sample lifetime of local variable index preserved after the execution of method .
class Program { static Action action; static void Main(string[] args) { setAction(); for (int i = 0; i < 5; i++) { action(); } Console.ReadLine(); } static void setAction() { var index = 5; action = () => { index++; Console.WriteLine("Value in index is {0}",index); }; } } The output of the program is this
Value in index is 6 Value in index is 7 Value in index is 8 Value in index is 9 Value in index is 10 I can not understand how the values in variable index is preserved.
SetActioninside for loop, then the value will not change since index variable will be re initialized, as newActionis created everytime