I am very new to lambda expressions in C # and I am having problems conceptualizing how they are stored / retrieved in a collection.
I am trying to programmatically create a list of 10 Funcs x => x + 1, x => x + 2 , etc. as a test. My desired result is 0,1,2,3,4,5,6,7,8,9
Here is my code for this:
var list = new List<Func<int, int>>(); for (int i = 0; i < 10; i++) { Func<int, int> func = x => x + i; Console.WriteLine("a) " + func.Invoke(0)); //returns 0,1,2,3,4,5,6,7,8,9 list.Add(func); Console.WriteLine("b) " + list[i].Invoke(0)); //returns 0,1,2,3,4,5,6,7,8,9 } foreach (var func in list) //returns 10,10,10,10,10,10,10,10,10,10 Console.WriteLine("c) " + func.Invoke(0)); for(int i = 0; i < list.Count; i++) //returns 10,10,10,10,10,10,10,10,10,10 Console.WriteLine("d) " + list[i].Invoke(0));
I get the same results when replacing the Func array for the [Func] list .
What am I missing?