2017-05-04 207 views
1

时的古怪行为我有简单的代码:的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变量为空,但仍进入到if块 看到波纹管截屏

enter image description here

更奇怪的是,我写到控制台,空对象的成员,它被写入控制台... =

enter image description here

+0

你不能总是相信你所看到的,调试器是不是在VS2015和VS2017非常可靠的。您可以通过工具>选项>调试>常规>“使用托管兼容模式”选项获得另一种意见。强制使用旧版本的调试引擎。或者继续前进。 –

+0

同样的东西..'null'并进入里面。 – SexyMF

+0

代码中的“com”与COM有什么关系?注意COM对象具有线程关联性,调试表达式在另一个对COM对象不友好的线程上执行。 –

回答

0

,这是因为可能你有你的数据库中的列的默认值,当你使用它FirstOrDefault试图让你行,如果它不能还给你列的默认值。
尝试使用First insted。请注意,First在未找到行的情况下会抛出异常。

Enumerable.FirstOrDefault Method (IEnumerable)

+0

这不是。 'First'也返回'false'。然后是同样的行为。 – SexyMF