为什么即使条件失败,条件仍在执行
本文关键字:条件 执行 失败 为什么 | 更新日期: 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
}