这是我的代码..
object o = DBExecuteScalar(myQuery);
if ((int.parse(o.ToString())) <= 2 || (o is null))
{
// my task....
}
在此代码中,&#39; o为空&#39;部分是错误的。任何帮助如何在单个if语句中处理这两个条件..我想要的是o的值应该是(null,0,1,2)。 任何帮助?
答案 0 :(得分:1)
带||首先评估运算符第一个条件 - 您要先检查是否为null。 int.Parse也没有必要。正如RGraham所提到的那样,null不是检查null的正确方法。
if (o == null || o == DBNull.Value || (int)o <= 2)
答案 1 :(得分:1)
当你在if中反转条件时,它应该工作。
在您的情况下,首先在对象o上调用ToString。但是因为o为null,这将导致异常。 当您颠倒条件的顺序时,则首先进行nullcheck。 or(||)的第二部分仅在第一部分为false时进行评估。这样可以防止发生异常
答案 2 :(得分:1)
在C#中,is
运算符检查类型是否相等。您需要检查null为o == null
:
object o = DBExecuteScalar(myQuery);
if ((o == null) || (int.parse(o.ToString())) <= 2)
{
// my task....
}
您还需要在尝试对其执行任何操作之前检查null