私はそれがどのように機能するかをよく理解していないコードを書きました。
私の質問は、ラジオ ボタン イベントが発生したときに参照される 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);
}