0

这是我的代码..

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

在此代码中,'o is null' 部分给出错误。任何帮助如何在单个 if 语句中处理这两个条件。我想要的是 o 的值应该是 (null,0,1,2)。有什么帮助吗??

4

3 回答 3

1

与 || 首先评估运算符的第一个条件 - 您想首先检查是否为空。也不需要 int.Parse 。正如 RGraham 提到的那样, null 不是检查 null 的正确方法。

 if (o == null || o == DBNull.Value || (int)o <= 2)
于 2014-05-07T07:47:51.090 回答
1

当您反转 if 中的条件时,它应该可以工作。

在您的情况下,首先在对象 o 上调用 ToString。但是因为 o 是 null 这将导致异常。当您颠倒条件的顺序时,nullcheck 将是第一个。or (||) 的第二部分仅在第一部分为假时计算。这将防止发生异常

于 2014-05-07T07:47:53.723 回答
1

在 C# 中,is运算符检查类型是否相等。您需要检查 null 为o == null

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

在尝试对其执行任何操作之前,您还需要检查 null

于 2014-05-07T07:50:25.090 回答