我們很常會使用 enum
(列舉)來將我們的狀態做一個紀錄
使用enum的優點在於我們不需要額外的打字,也不用擔心自己打錯字
因此就可以利用enum
來去針對狀態去做一個紀錄、判斷。
而今天要介紹的是關於enum
以及switch..case
搭配的方法。
在我們撰寫程式的時候,有時候針對多個Button功能會綁定同一個事件,再根據Button內容的不同來去執行功能。
這時候我們可能會搭配Enum這樣寫:
// 讀取按鈕上的文字來執行功能:
// 如果不是讀取到功能按鈕,則將按鈕上的文字呈現在 文字方塊(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()
這時候我們可以使用 C# 6.0的功能- nameof
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;
}
以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教:)
有任何家教、案子 或技術相關問題 請都歡迎聯繫我