为什么如果条件被执行甚至条件失败

时间:2014-09-15 06:07:36

标签: c# asp.net .net if-statement

我已经把if条件检查了我的字符串不是空的然后执行if if else什么,但它即使字符串为空也会被执行,我运行调试器并且它显示字符串变量的值为&#34 ;"但它仍然执行

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
}

5 个答案:

答案 0 :(得分:3)

你正在使用OR,所以当你通过""时,第一个条件是true,这意味着OR条件无论如何都是真的。

我们IsNullOrEmpty()而不是

答案 1 :(得分:3)

你的条件是:

ComplainantContactNo != null || ComplainantContactNo != ""

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

您可能打算使用'和'代替:

ComplainantContactNo != null && ComplainantContactNo != ""

现在,字符串必须两者不为空且不为空,以便将整个表达式视为真。

请注意,这是一项常见操作,可以使用内置方法执行此检查:

String.IsNullOrEmpty(ComplainantContactNo)

答案 2 :(得分:2)

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

或者条款,至少需要一个条件才是真的。如果是空字符串,则第一个条件为真,因此代码将被执行。

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

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

答案 3 :(得分:1)

检查null或空的首选方法

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

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

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

答案 4 :(得分:1)

您应该使用&&代替||

让我简要解释会发生什么;

我们假设ComplainantContactNo == null,然后是

ComplainantContactNo != null || ComplainantContactNo != ""

将成为false || true,这将导致true

ComplainantContactNo == "";

时的相同故事

ComplainantContactNo != null || ComplainantContactNo != ""

将成为true || false,这将导致true

另外,请记住,您要测试对象是否为空不是空字符串。正如单词所说,使用 AND -operator。

有关详细信息,请查看AND-operatorOR-operator