0

メソッド内で変数を定義し、Lambda 式を使用してイベントをサブスクライブし、その式の本体内で変数を使用した場合、参照は引き続き有効ですか? コンパイル時エラーは発生しませんが、期待どおりに動作していないようです。

見る:

void OnAddAssignment()
{
    var win = new View.NewTransportationView();
    var vm = new NewTransportationViewModel(DateTime.Today);
    vm.JobSaved += (s, e) => { win.Close(); };

    win.DataContext = new ViewModel.NewTransportationViewModel(DateTime.Today);
    win.WindowStartupLocation = WindowStartupLocation.CenterScreen;

    win.Show();
}

注:NewTransportationViewから継承System.Windows.Window

JobSaved火災が発生したときにウィンドウが閉じ、NewTransportationViewメソッドの外部への参照を保存する必要がなくなることを望んでいました。

この問題を解決するには、おそらく他にも多くの方法があり、その多くまたは最も洗練された効率的な方法があることを認識しています。提案を見ることは確かにオープンですが、ラムダのこの特定のアプリケーションの一般的な動作とスコープルールにもっと興味があります表現。

おまけの質問: Window オブジェクトを呼び出すと.Show()、それらのオブジェクトはどこに存在するのでしょうか?

4

0 に答える 0