[英]How to ask say “or” in an if-statement
private void caseTextBox_TextChanged(object sender, EventArgs e)
{
var CTcase = caseTextBox.Text;
caseTextBox.CharacterCasing = CharacterCasing.Upper;
if (CTcase == "THRUHOLE")
{
displayLabel3.Text = "0";
}
else if (CTcase == "EIAA")
{
displayLabel3.Text = "1";
}
else if (CTcase == "EIAB")
{
displayLabel3.Text = "2";
}
else if (CTcase == "EIAC")
{
displayLabel3.Text = "3";
}
else if (CTcase == "EIAD")
{
displayLabel3.Text = "4";
}
else
{
displayLabel3.Text = "error";
}
}
在每个语句中,有3个值可以等于显示正确的数字。 但是我不想写15 if
/ else
语句来使它工作。 我尝试使用||
, |
, &
和和&&
。 但我不断收到错误消息
运算符不能应用于类型为'bool'和'string'的操作数
private void caseTextBox_TextChanged(object sender, EventArgs e)
{
var CTcase = caseTextBox.Text;
caseTextBox.CharacterCasing = CharacterCasing.Upper;
if (CTcase == "THRUHOLE")
{
displayLabel3.Text = "0";
}
else if (CTcase == "EIAA" || "1206")
{
displayLabel3.Text = "1";
}
我宁愿消除所有if (当数量庞大且复杂时看起来很难看),而是创建一个字典 :
Dictionary<String, String> labels = new Dictionary<String, String>() {
{"THRUHOLE", "0"},
{"EIAA", "1"},
{"1206", "1"},
{"EIAB", "2"},
{"EIAC", "3"},
{"EIAD", "4"},
};
...
String text;
if (labels.TryGetValue(CTcase, out text))
displayLabel3.Text = text;
else
displayLabel3.Text = "error";
有两个运算符可能会解决问题。
|
是or
,它将导致if
所有语句在评估之前执行。
||
是or else
将导致语句从左到右执行,直到满足条件为止(这时它将停止测试其他条件)。
就您而言,您可以执行以下操作:
if (CTcase == "THRUHOLE" || CTcase == "some other value" || CTcase == "something else")
{
displayLabel3.Text = "0";
}
例如:
if (CTcase == "THRUHOLE" || CTcase == "something else")
{
displayLabel3.Text = "0";
}
但是-对于这种情况-使用枚举。 它更具可读性! https://msdn.microsoft.com/pl-pl/library/sbbt4032.aspx
听起来您可能正在使用|| 不正确地 它本身必须是完整的声明。
如:
if(CTcase == "THRUHOLE" || CTcase == "somethingelse")
{
displaylabel3.Text = "0";
}
这应该工作:
CTcase = caseTextBox.Text;
if (CTcase == "test" || CTcase == "Test" || CTcase == "TEST")
{
}
我检查是否只有“写入错误”的方式是,我将执行以下操作:
CTcase = caseTextBox.Text.ToLower();
if (CTcase == "test")
{
}
但这仅在您不想在“测试”和“测试”之间进行区分时才有效。
我认为您可以像这样扩展字符串类的方法
public static class StringExtension
{
public static bool In(this string source, params string[] matches)
{
return matches.Contains(source);
}
}
然后在您的程序中使用它,而不必担心许多if-clause
string displayLabel = string.Empty;
string CTcase = "EIAA";
if (CTcase.In("THRUHOLE"))
{
displayLabel = "0";
}
else if (CTcase.In("EIAA", "1206"))
{
displayLabel = "1";
}
希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.