我剛寫了一些代碼,我不太明白它是如何工作的。循環內的外部變量如何與lambda一起工作?
我的問題是關於for循環中的局部變量,然後在單選按鈕事件發生時被引用。
它如何跟蹤這些局部變量的不同「版本」並正確運行? (即所得到的單選按鈕各火災與從外局部變量衍生它們的相應值的事件)
public class RadioButtonPanel<T> : FlowLayoutPanel
{
public RadioButtonPanel()
{
foreach (object value in Enum.GetValues(typeof(T)))
{
string name = Enum.GetName(typeof(T), value);
var radioButton = new RadioButton { Text = name };
radioButton.CheckedChanged += (s, e) =>
{
if (radioButton.Checked && this.Selected != null)
Selected((T)Enum.Parse(typeof(T), name));
};
this.Controls.Add(radioButton);
}
}
public event SelectedEvent Selected;
public delegate void SelectedEvent(T t);
}