C# ExecuteScalar空值错误

C# ExecuteScalar空值错误,c#,executescalar,C#,Executescalar,这是我的密码 object o = DBExecuteScalar(myQuery); if ((int.parse(o.ToString())) <= 2 || (o is null)) { // my task.... } objecto=DBExecuteScalar(myQuery); 如果首先计算带有| |运算符的((int.parse(o.ToString()),则首先要检查是否为null。 此外,int.Parse是不必要的。

这是我的密码

    object o = DBExecuteScalar(myQuery);
    if ((int.parse(o.ToString())) <= 2 || (o is null))
    {
        // my task....
    }
objecto=DBExecuteScalar(myQuery);

如果首先计算带有| |运算符的((int.parse(o.ToString()),则首先要检查是否为null。 此外,int.Parse是不必要的。正如RGraham提到的,is null不是检查null的正确方法

 if (o == null || o == DBNull.Value || (int)o <= 2)

if(o==null | | o==DBNull.Value | | |(int)o与| | |运算符的第一个条件首先求值-您想先检查是否为null。
此外,int.Parse是不必要的。正如RGraham提到的,is null不是检查null的正确方法

 if (o == null || o == DBNull.Value || (int)o <= 2)

if(o==null | | o==DBNull.Value | |(int)o当您反转if中的条件时,它应该可以工作

在您的例子中,首先对对象o调用ToString。但是由于o为null,这将导致异常。
当您颠倒条件的顺序时,将首先执行nullcheck。只有当第一部分为false时,才会计算or(| |)的第二部分。这将防止在if中反转条件时发生异常,那么它应该可以工作

在您的例子中,首先对对象o调用ToString。但是由于o为null,这将导致异常。 当您颠倒条件的顺序时,
is
运算符将首先检查类型是否相等。只有当第一部分为false时,才会计算or(| |)的第二部分。这将防止异常发生在C#中,
is
运算符检查类型是否相等。您需要检查null,因为
o==null

object o = DBExecuteScalar(myQuery);
if ((o == null) || (int.parse(o.ToString())) <= 2)
{
        // my task....
}
objecto=DBExecuteScalar(myQuery);
如果C#中的((o==null)|(int.parse(o.ToString()),则
is
运算符检查类型是否相等。您需要检查null,因为
o==null

object o = DBExecuteScalar(myQuery);
if ((o == null) || (int.parse(o.ToString())) <= 2)
{
        // my task....
}
objecto=DBExecuteScalar(myQuery);
if((o==null)| |(int.parse(o.ToString()))