C#条件存在问题

本文关键字:问题 存在 条件 | 更新日期: 2023-09-27 17:58:32

嗨,我有以下代码:

medianListTester.cfyPE = 0;
if (medianListTester.cfyPE != 0 || testStock.getCEPS() != 0)
{
    medianCYPE_price = medianListTester.cfyPE * testStock.getCEPS();
    counter++;
}
else
   //do something else

但它似乎没有"做其他事情",仍然在条件中激发代码。我是不是做错了什么?为什么它不运行if语句中的代码?

C#条件存在问题

如果testStock.getCEPS()不为0,则不会命中else块。根据你的需要和期望,你可能需要使用&而不是||?

medianListTester.cfyPE设置为0,因此if语句中的第一个子句的计算结果为false。什么是TestStock.getCEPS()?如果这是非零的,那么它将计算为true,并且整个If语句为true。

我真的不知道你在问什么,但你调用了getCEPS()两次,也许这返回了两个不同的值,也许这会给你带来麻烦。

试试这个:

medianListTester.cfyPE = 0;
var ceps = testStock.getCEPS();
if (medianListTester.cfyPE != 0 || ceps != 0) 
{     
    medianCYPE_price = medianListTester.cfyPE * ceps;     
    counter++; 
}  
else    
    //do something else 

听起来testStock.getCEPS()返回的不是0。这就解释了为什么它从未命中do something else。你检查过这是什么退货了吗?

调用testStock.getCEPS()的值是多少?如果不是0,它仍然会进入那个代码块。此外,我不知道medianListTester引用的对象的详细信息,但可能有一个getter/setter工作不正常。

解决此问题的最佳方法是在赋值之后但在if语句之前打印或以某种方式查看medianListTester.cfyPE和testStock.getCEPS()的值。