以下の C# コードでは、最初の印刷セットが次の出力を生成するのはなぜですか?
C
C
C
しかし、それに相当するLINQは次の出力を生成します
A
B
C
出力の最初のセットを理解しています - ループを出るときに最後の値を取りますが、従来のループと同等の LINQ の間に一貫性があるべきだと私には思えますか? - どちらの場合も CCC または ABC を出力する必要がありますか?
public static void Main(string[] str)
{
List<string> names = new List<string>() {"A", "B", "C"};
List<Action> actions = new List<Action>();
foreach(var name in names)
{
actions.Add(() => Console.WriteLine(name));
}
foreach(var action in actions)
{
action.Invoke();
}
List<Action> actionList = names.Select<string, Action>(s => () => Console.WriteLine(s)).ToList();
foreach(var action in actionList)
{
action.Invoke();
}
}