2013-08-21 2 views
-1

Я пытаюсь отправить электронное письмо после того, как все эти условия будут найдены как истинные, но моя проблема в том, что он по-прежнему отправляет электронную почту, даже если для этого условия установлено значение false , Например, если var3 или var4 или var5 «НЕТ», я не хочу отправлять электронную почту. Вот это псевдо-код для того, что я проверяю, и все они должны быть правдой для того, чтобы отправить сообщение электронной почты из:Как использовать оператор IF в asp.net с помощью C#

If(var1 is not blank And var2 is not set to “YES” And (either var3 OR var4 OR var5 are not set to “NO”) 
Then 
{ 
Send_Email(); 
} 

вот мой текущий код:

if var1 != (" ") && var2!= "YES" && var3!= ("NO") || var4!= ("NO") || var5!= ("NO"))) 
{ 
sendEmail(); 
} 
+3

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

+0

«Текущий» код имеет синтаксические ошибки. – asawyer

+0

@Sam, asawyer, почему вы предполагаете, что OP удалось написать компилируемый код? Я верю, что именно поэтому он задает этот вопрос. –

ответ

0

Поскольку ваши условия довольно большие, ничто не мешает вам писать несколько небольших методов для повышения читаемости.

Кроме того, вместо проверки на != "&nbsp", вы должны использовать string.IsNullOrEmpty.

private bool IsVar1Blank(string var1) 
{ 
    return string.IsNullOrWhiteSpace(var1); 
} 

private bool IsVar2SetToYes(string var2) 
{ 
    return var2 == "YES"; 
} 

private bool IsAnOtherVariableNotSetToNo(string var3, string var4, string var5) 
{ 
    return var3 != ("NO") || var4 != ("NO") || var5 != ("NO"); 
} 

И вы получите этот результат:

if (!IsVar1Blank(var1) && !IsVar2SetToYes(var2) && IsAnOtherVariableNotSetToNo(var3, var4, var5) 
{ 
    sendEmail(); 
} 

Кроме того, чтобы всегда быть уверены, что ваш код работает, вы действительно должны смотреть в письменной форме Unit Tests.

2

сделать это как этот

if(var1 != " " && var2!= "YES" && var3!= "NO" && var4!= "NO" && var5!= "NO") 
{ 
    sendEmail(); 
} 
2

if either var3 or var4 or var5 is “NO” then I don’t want to send email out.

похоже, что вы должны использовать логическое И (&&), где вы используете логическое ИЛИ (||)

так что следующее будет оценивать истинно, если ЛЮБОГО из var3, var4 или var5 не "NO"

var3!= ("NO") || var4!= ("NO") || var5!= ("NO") 

изменить их все && так что вы в конечном итоге с

var1 != (" ") && var2!= "YES" && var3!= ("NO") && var4!= ("NO") && var5!= ("NO") 


Некоторые другие наблюдения ...

открытии PAREN на ваш, если заявление отсутствует, вы должны добавить его в.

if (var1 != (" ") && var2!= "YES" && var3!= ("NO") || var4!= ("NO") || var5!= ("NO"))) 
{ 
    sendEmail(); 
} 

во-вторых, это трудно сказать, что вы хотите, чтобы ваши состояние будет. со всеми || и &&. Вы должны просмотреть C# order of operations, чтобы убедиться, что вы делаете это правильно, и в скобки, если вы этого не сделаете.

как примечание, && получает оценку, прежде чем || делает


наконец, вы должны также создать контрольную точку с debugger и убедитесь, что ваши переменные, что вы думаете, что они должны быть. Помните, что сравнение, которое вы делаете, чувствительно к регистру.

3

попробовать это

if (var1 != " " && var2!= "YES" && (var3!= "NO" || var4!= "NO" || var5!= "NO")) 
{ 
    sendEmail(); 
} 
3

Используйте круглые скобки в вашем реальном коде таким же образом, что вы делаете в псевдокоде:

if (var1 != (" ") && var2!= "YES" && (var3!= ("NO") || var4!= ("NO") || var5!= ("NO"))) 
{ 
    sendEmail(); 
} 
1
if(var1 != (" ") && var2 ! = "YES" && (var3 != ("NO") || var4 != ("NO") || var5 != "NO"))) 

Я думаю, что ваша скобка выключена.

1

Прямо сейчас ваш чек будет работать только в том случае, если ВСЕ из трех варов не являются NO.Это может быть яснее:

if (var1 != (" ") && 
    var2!= "YES" && 
    !(var3 == ("NO") || var4 == ("NO") || var5 == ("NO")) // Any of these being "NO" will fail the `if` check 
    ) 
{ 
    sendEmail(); 
} 

Логически это то же самое, как:

if (var1 != (" ") && 
    var2!= "YES" && 
    (var3 != ("NO") && var4 != ("NO") && var5 != ("NO")) 
    ) 
Смежные вопросы