2

よくわかりませんが、すべてを1行で行うことをインライン化と呼びますか?

私のコードには、この BackgroundWorker があります。DoWorker はオン秒のスリープを強制し、RunWorkerCompleted はコードをまったく実行しません。関数を定義する代わりに、すべてを1行で実行することは可能ですか?

.DoWork += ((sender, arg) => { ... }); 

.RunWorkerCompleted += ((sender, arg...

これの正しい構文は何ですか?これは何と呼ばれていますか? 簡単なタスクを手元に置いているときは、物事をシンプルに保つのは素晴らしいことです:-)

4

1 に答える 1

1

と混同inliningしていlambda expressionsます。 インライン化は、メソッドの呼び出しをその本体に置き換えます。次に例を示します。

int TimesTwo(int x) 
{
   return x * 2;
}

//before inlining:
int a = TimesTwo(6) + TimesTwo(7);
//after inlining:
int a = 6 * 2 + 7 * 2;

これは、メソッド呼び出しのオーバーヘッドを回避するためのコンパイラ最適化手法です。

あなたのBackgroundWorker例では、正しい構文は次のようになります。

 BackgroundWorker worker = new BackgroundWorker();
 worker.DoWork += (sender, e) => RunMyMethod();
 //or
 worker.DoWork += (sender, e) => { RunMyMethod(); }

詳細については、MSDNを参照してください。

于 2013-07-31T09:46:53.907 に答える