簡體   English   中英

如何在if語句中說“或”

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM