使用enum的優點在於不需要額外的打字
能增加程式的可讀性,也不怕會打錯字
而列舉 Enum 與 switch 也很常被一起使用
像是當使用者輸入運算符號時,去做運算判斷時
可先新增一個類別,並將class改成Enum
namespace TestDemo
{
enum Operation
{
plus, minus, multiply, divided
}
}
並將enum加入到方法裡面,去判斷要執行的運算符號
public void Test(Operation operator)
{
switch (operator)
{
case Operation.plus:
textBox1.Text = (value + value2).ToString();
break;
case Operation.minus:
textBox1.Text = (value - value2).ToString();
break;
case Operation.multiply:
textBox1.Text = (value * value2).ToString();
break;
case Operation.divided:
textBox1.Text = (value / value2).ToString();
break;
default:
break;
}
}
而在有時候,當針對多個Button綁定同一個事件,再根據Button內容的不同來去執行功能時
也可以搭配使用 Enum 與 switch
// 讀取按鈕文字來執行功能:
// 如果不是讀取到功能按鈕,則按鈕上文字呈現在Content上
Button btn = (Button)sender;
switch (btn.Text)
{
case 功能.換行.toString():
Content.Text += "\r\n";
break;
case 功能.全部複製.toString():
Content.SelectAll();
Content.Copy();
break;
case 功能.貼上.toString():
Content.Paste();
break;
case 功能.清空.toString():
Content.Text = "";
break;
default:
Content.Text += btn.Text;
break;
}
但是這時候會發生編譯器錯誤,原因在於 Switch內的值以及 Case中的內容並不一致,儘管已使用了.toString()
因此這時候就可以使用nameof 關鍵字
將程式修改成
Button btn = (Button)sender;
switch (btn.Text)
{
case nameof(功能.換行): //取得enum 選項中的名字-換行
Content.Text += "\r\n";
break;
case nameof(功能.全部複製):
Content.SelectAll();
Content.Copy();
break;
case nameof(功能.貼上):
Content.Paste();
break;
case nameof(功能.清空):
Content.Text = "";
break;
default:
Content.Text += btn.Text;
break;
}
新人發文,文章敘述如有錯誤及觀念不正確,請不吝嗇指教,感謝~