为什么即使条件失败,条件仍在执行

本文关键字:条件 执行 失败 为什么 | 更新日期: 2023-09-27 18:21:55

我已经设置了if条件来检查I字符串是否为空,然后如果块其他什么都不执行,即使字符串为空,它也会被执行,我运行了调试器,它将字符串变量的值显示为",但它仍然执行

string ComplainantContactNo = Convert.ToString(ViewState["CompContactNo"]);
if (ComplainantContactNo != null || ComplainantContactNo != "")
{
    ManageQueueBizz quebiz = new ManageQueueBizz();
    quebiz.Insert(ComplainantContactNo, "Your complaint has been registered successfully." + " 'n Complaint Code: " + " " + OldComplaintCode + "." + " " + "To confirm your status send this complaint code." + "'n (Complaint Cell'n CPO,KP)", null, Convert.ToInt32(lblComplainantID.Text), null, null);  //Sms to complainant
}

为什么即使条件失败,条件仍在执行

您使用的是OR,因此当您通过""时,第一个条件是true,这意味着无论发生什么情况,OR条件都为true。

us IsNullOrEmpty()而不是

您的条件是:

ComplainantContactNo != null || ComplainantContactNo != ""

空字符串不为null,因此第一个条件为true,因此if语句中的代码将运行。请记住,当您使用"或"(A || B)时,只要左侧为true、右侧为true或两侧均为true,则整个语句都被视为true。

你可能想用"and"来代替:

ComplainantContactNo != null && ComplainantContactNo != ""

现在,字符串必须都不为null且不为空,才能将整个表达式视为true。

请注意,这是一个非常常见的操作,因此有一个内置的方法来执行此检查:

String.IsNullOrEmpty(ComplainantContactNo)

您的if条件被转换为:如果ComplainantContactNo不为null或不是空字符串,则执行以下代码。

或者子句,至少需要一个条件为真。在空字符串的情况下,第一个条件为true,因此将执行代码。

你可能想使用这样的东西(.Net 4.0):

if(!string.IsNullOrEmptyOrWhiteSpace(ComplainantContactNo)){
// Execute code here
} 

您应该使用&&而不是||

让我简要解释一下发生了什么;

假设ComplainantContactNo == null

ComplainantContactNo != null || ComplainantContactNo != ""

将变成CCD_ 9,这将导致CCD_。

ComplainantContactNo == ""时也是如此;

ComplainantContactNo != null || ComplainantContactNo != ""

将变成CCD_ 13,这将导致CCD_。

此外,请记住,您希望测试对象是否不是null是否不是空字符串。正如单词所说,使用AND-运算符。

有关详细信息,请查看AND运算符和OR运算符。

检查空的首选方法

If(!String.IsNullOrEmpty(ComplainantContactNo))
{
    // Your code
}

从.net 4.0开始,您可以使用IsNullOrWhiteSpace()方法,该方法指示指定的字符串是null、空还是仅由空白字符组成

 If(!String.IsNullOrWhiteSpace(ComplainantContactNo))
    {
        // Your code
    }