委任されたタスクを別の関数で分けるのではなくインライン化できる方法はありますか?アクションデリゲートに関数をインライン化して同時に参照する方法はありますか?
オリジナルコード:
private void ofdAttachment_FileOk(object sender, CancelEventArgs e)
{
Action attach = delegate
{
if (this.InvokeRequired)
{
// but it has compilation here
// "Use of unassigned local variable 'attach'"
this.Invoke(new Action(attach));
}
else
{
// attaching routine here
}
};
System.Threading.ThreadPool.QueueUserWorkItem((o) => attach());
}
ありがとうございました^ _ ^それはちょっとちょっと恥ずかしがり、なぜC#が未割り当てとしてそれを検出したのですか? – Hao
実行時に、割り当ての右側が左側より前に評価されます。したがって、この警告の原因となるコンパイラの部分は、変数の値を、割り当てられた行の式の右側で使用しようとしていることが分かります。したがって、RHSの評価中、hasnまだ割り当てられていません。もちろん、コンパイラはクロージャーにそれを持ち上げるので、とにかくOKです - コンパイラは、警告を出すときにコンパイラがそれをどのように変更するのか分からないと思います。 –