위임 된 작업을 다른 기능에서 분리하는 대신 인라인 할 수있는 방법이 있습니까?함수 대리자에게 함수를 인라인 할 수 있고 동시에 참조 할 수있는 방법이 있습니까?
원본 코드 :이 작동합니다 생각
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 아직 배정되지 않았습니다. 물론, 컴파일러는 그것을 클로저로 들여 올 것이므로, 어쨌든 괜찮을 것입니다. 컴파일러는 경고를 내보낼 때 컴파일러가 그것을 어떻게 수정할지 알지 못합니다. –