2

私はそのような構成を使用しています:

string myurl = "http://google.de";
Task.Factory.StartNew(() =>
{
   MessageBox.Show(url);
});

myurl を匿名関数に渡す方法は?

4

1 に答える 1

7

直接使用してください:

string myurl = "http://google.de";
Task.Factory.StartNew(() =>
{
   MessageBox.Show(myurl);
});

これを「閉鎖」と呼びます。

それをしたくない場合は、URL を別のパラメーターとして に渡すことができますStartNew

string myurl = "http://google.de";
Task.Factory.StartNew(url =>
{
   MessageBox.Show((string)url);
}, myurl);

この 2 番目のバージョンは少し多くのコードであり、パラメーターを 1 つだけに制限し (複数ある場合は、クロージャーを使用するか、すべてのパラメーターをコンテナー オブジェクトに入れる必要があります)、パラメーターをobjectに型付けするため、強制的にメソッド本体の実際の内容にキャストします。一方、利点は、この方法を使用して潜在的に回避できる変数を閉じることに関連する小さなオーバーヘッドがあることです。ほとんどの場合、これは重要なパフォーマンスの問題にはならないことに注意してください。そのため、特に理由がない限り、最も便利な方法を使用する必要があります。

于 2013-05-03T16:53:02.743 に答える