【发布时间】:2017-08-31 01:04:59
【问题描述】:
在以下代码中:
async Task<int> Foo()
{
int result;
await Task.Run( () => { result = 9999; } );
return result;
}
VS 2015 报错:“Use of unassigned local variable 'result'”。所以,让我们做出改变:
async Task<int> Foo()
{
int result = 0;
await Task.Run( () => { result = 9999;} );
return result;
}
然后瞧。这不仅会编译,还会返回 9999(如预期的那样)。
为什么result在Task.Run语句中明显赋值,却在第一个例子中被认为是未赋值?
【问题讨论】: