Tôi không thể hiểu cách lặp qua danh sách Action
. Khi tôi thử nó, tôi kết thúc với các giá trị giống như lần lặp trước.Lặp qua danh sách các hành động
Dưới đây là mã (ví dụ đơn giản):
string[] strings = { "abc", "def", "ghi" };
var actions = new List<Action>();
foreach (string str in strings)
actions.Add(new Action(() => { Trace.WriteLine(str); }));
foreach (var action in actions)
action();
Output:
ghi
ghi
ghi
Tại sao nó luôn chọn các yếu tố cuối cùng trong strings
khi nó thực hiện các hành động?
Và làm thế nào tôi có thể đạt được kết quả mong muốn đó sẽ là:
abc
def
ghi
Gah, bạn thắng. Tôi biết cách sửa nó, nhưng tôi không thể nhớ lý do tại sao. Đóng cửa! Tôi cần đóng cửa! +1 :) – Joshua
@Joshua không lâu lắm rồi khi tôi học được một chút sâu hơn :) ... điều này có thể tốt cho việc đọc thêm http://stackoverflow.com/questions/9412672/lambda-expressions-with -multithreading-in-c-sharp –
Thú vị, tôi chưa bao giờ nhận ra. Cảm ơn. – demoncodemonkey