私は次のことを頻繁に行っていますが、副作用があるかどうかはわかりませんが、WinForms C# アプリで次のことを検討してください。(コードを入力しているので、何かをコピーして貼り付けるのではなく、エラーがあればお許しください)
int a = 1;
int b = 2;
int c = 3;
this.Invoke((MethodInvoker)delegate()
{
int lol = a + b + c;
});
何か問題がありますか?それとも遠回りするべきか>_<
int a = 1;
int b = 2;
int c = 3;
TrippleIntDelegate ffs = new TrippleIntDelegate(delegate(int a_, int b_, int c_)
{
int lol = a_ + b_ + c_;
});
this.Invoke(ffs);
違いは、ローカル変数を使用する代わりにパラメーターが渡されることです。かなり甘い .net マジックです。一度リフレクターを見て、それらの変数を保持するためのまったく新しいクラスを作成したと思います。
それで、それは問題ですか?怠けてもいいですか?
編集:注意してください、明らかに戻り値を気にしないでください。それ以外の場合は、ローカル変数を渡さずに使用できますが、独自の型付きデリゲートを使用する必要があります。