将项目从VS2013迁移到VS2015后,该项目将不再生成。以下LINQ语句中发生编译错误:
static void Main(string[] args)
{
decimal a, b;
IEnumerable<dynamic> array = new string[] { "10", "20", "30" };
var result = (from v in array
where decimal.TryParse(v, out a) && decimal.TryParse("15", out b) && a <= b // Error here
orderby decimal.Parse(v)
select v).ToArray();
}
编译器返回错误:
错误CS0165使用未分配的局部变量'b'
是什么原因导致此问题?是否可以通过编译器设置修复它?
out
参数的所有问题。那会TryParse
返回一个可空值(或等效值)。
where (a = decimal.TryParse(v)).HasValue && (b = decimal.TryParse(v)).HasValue && a <= b
看起来多好
decimal a, b; var q = decimal.TryParse((dynamic)"10", out a) && decimal.TryParse("15", out b) && a <= b;
。我已经打开了罗斯林(Roslyn)的bug来提出这个问题。
b
在通过out
参数分配后使用。