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";
}
答案 0 :(得分:6)
我宁愿消除所有 ifs (当大量且复杂时看起来很丑陋)并创建一个< em>字典而不是:
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";
答案 1 :(得分:1)
有两个操作员可能会这样做。
|
是or
,会导致if
中的所有陈述在评估之前执行。
||
是or else
,它将导致语句从左到右执行,直到满足条件为止(此时它会停止测试其他条件)。
在您的情况下,您可以执行以下操作:
if (CTcase == "THRUHOLE" || CTcase == "some other value" || CTcase == "something else")
{
displayLabel3.Text = "0";
}
答案 2 :(得分:1)
例如:
if (CTcase == "THRUHOLE" || CTcase == "something else")
{
displayLabel3.Text = "0";
}
但是 - 对于像这样的案例 - 使用枚举。它更具可读性! https://msdn.microsoft.com/pl-pl/library/sbbt4032.aspx
答案 3 :(得分:0)
听起来你可能正在使用||不当。它必须是一个完整的声明本身。
如:
if(CTcase == "THRUHOLE" || CTcase == "somethingelse")
{
displaylabel3.Text = "0";
}
答案 4 :(得分:0)
这应该有效:
CTcase = caseTextBox.Text;
if (CTcase == "test" || CTcase == "Test" || CTcase == "TEST")
{
}
我的方法是检查是否只有“写入错误”,我会执行以下操作:
CTcase = caseTextBox.Text.ToLower();
if (CTcase == "test")
{
}
但这只有在您不想在“测试”和“测试”之间产生差异时才有效。
答案 5 :(得分:0)
我认为你可以像这样扩展字符串类的方法
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";
}
我希望这对你有所帮助。