2014-09-15 8 views
-1

У меня есть условие, чтобы проверить, что строка i не пуста, а затем выполнить, если блок else ничего, кроме того, что он выполняется, даже если строка пуста, я запускал отладчик и показывал значение строки переменная, как «», но все же он выполняетПочему условие выполняется, даже условие не работает

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 
} 

ответ

3

вы используете или так, когда вы проходите через "" первое условие true означает, что OR условие не верно ни на что.

нас IsNullOrEmpty() вместо

+0

нормально, но если первое условие не выполняется, так второй будет проверено, не так ли? в случае ИЛИ? –

+0

@JohnNash Это правильно. Короткий curcuiting означает, что в OR, если первое верно, ни один из остальных не проверяется. Но если это ложь, то она продолжается, пока не получит ИСТИННЫЙ. Обратное верно для условия И. –

3

Ваше состояние:

ComplainantContactNo != null || ComplainantContactNo != "" 

пустая строка не является нулевой, так что первое условие истинно, поэтому код в прогонов, если это заявление. Помните, что когда вы используете «или» (A || B), весь оператор считается истинным, если только левая сторона истинна, правая сторона истинна или обе стороны истинны.

вероятно Вы имели в виду использовать «и» вместо:

ComplainantContactNo != null && ComplainantContactNo != "" 

Теперь строка должна как быть не нулевым, а не пустой для того, чтобы все выражение, что считается истинным.

Обратите внимание, что это такая обычная операция, что есть встроенный метод для выполнения этой проверки:

String.IsNullOrEmpty(ComplainantContactNo) 
+0

нормально, но если первое условие не срабатывает, второе будет проверено, верно? в случае ИЛИ? –

+0

@JohnNash - да, если первое условие в операторе OR не работает, проверяется второе. – Michael0x2a

1

Предпочтительный способ проверить нуль или пустой

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

С .net 4.0 Onward вы можете использовать метод IsNullOrWhiteSpace(), который указывает, является ли указанная строка пустой, пустой или состоит только из символов пробела

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

избил меня ... – 2014-09-15 06:11:06

1

Вы должны использовать && вместо ||.

Позвольте мне вкратце объяснить, что произойдет;

Предположим, что ComplainantContactNo == null;

ComplainantContactNo != null || ComplainantContactNo != ""

станет false || true, который приведет к true.

Такая же история, когда ComplainantContactNo == "";

ComplainantContactNo != null || ComplainantContactNo != ""

станет true || false, который приведет к true.

Также имейте в виду, что вы хотите проверить, не является ли объект нулевым и не является пустой строкой. Как говорится в этом слове, используйте И -оператор.

Для получения дополнительной информации, взгляните на AND-operator и OR-operator.

2

Ваши условия if переводятся в: Выполнение следующего кода, если ComplainantContactNo не является нулевым или если не является пустой строкой.

В любом случае требуется хотя бы одно условие. В случае пустой строки первое условие истинно и, следовательно, код будет выполнен.

Вы можете использовать что-то вроде этого (.Net 4.0):

if(!string.IsNullOrEmptyOrWhiteSpace(ComplainantContactNo)){ 
// Execute code here 
} 
Смежные вопросы