[英]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.