今天遇到一个很诡异的问题,初步猜测是Linq编译以及编译器自动优化带来的原因,对IL不是很熟悉,所以懒得去追了。
贴个代码出来,希望能抛砖引玉,得到正解。
注意到我用原始的foreach语句代替了linq查询。若是用linq,则在运行var arg = JsonConvert.DeserializeObject<LoadHallArg>(requestInfo.Body);这句时就报空引用错误。
var arg = JsonConvert.DeserializeObject<LoadHallArg>(requestInfo.Body);
//var hall = TestDataCenter.Halls.FirstOrDefault(o => o.HallId == others.HallId);
Hall hall = null;
foreach (var hl in TestDataCenter.Halls)
{
if (hl.HallId == arg.HallId)
{
hall = hl;
break;
}
}