visual studio 2017调试时奇怪的行为

时间:2017-05-04 06:20:35

标签: debugging visual-studio-2017

我的代码很简单:

 CommissionTierEntity tier = structure.Tiers.FirstOrDefault(x => commiossionInfo.Sum >= x.NumberFrom && commiossionInfo.Sum <= x.NumberTo);
 if (tier != null)
  {
     com.PaymentAmount = trade.PipValue * (tier.Commission / 100);
     commiossionInfo.Sum += com.PaymentAmount;
     payable = true;
  }

tier变量为null,但仍然进入if块 看到屏幕截图咆哮

enter image description here

更奇怪的是,我写入控制台,来自null对象的成员,并将其写入控制台... =

enter image description here

1 个答案:

答案 0 :(得分:0)

这是因为您的数据库中的列可能有默认值,当您使用FirstOrDefault时,它会尝试获取您的行,如果不能,则会返回列的默认值。
尝试使用First insted。请注意First在未找到行的情况下抛出异常。

Enumerable.FirstOrDefault Method (IEnumerable)