首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 列舉實戰:Enum.GetNames、Parse 與 ComboBox 綁定完全攻略

     編輯:關於C#

列舉 是限定「可選值集合」的最佳利器。無論是馬桶類型(男/女/狗)、象棋陣營(紅/黑),還是性別(男/女/人妖),把合法選項封裝成 enum,既能讓 IntelliSense 提示,又能在編譯期攔截非法值。本文聚焦兩個實用技巧:Enum.GetNames 取得所有成員名稱、Enum.Parse/TryParse 字串轉列舉,並示範直接綁定 ComboBox 的完整流程。

Enum.GetNames:一行搞定「所有選項」

enum Rencai { 白癡, 奇才, 鬼才 }

string[] names = Enum.GetNames(typeof(Rencai));
// 結果:["白癡", "奇才", "鬼才"]

這在「把列舉綁定到下拉選單」時極其好用——不需手寫字串陣列,日後增減列舉值,UI 自動同步。

Enum.Parse / TryParse:字串安全轉列舉

string input = "奇才";
Rencai rc = (Rencai)Enum.Parse(typeof(Rencai), input);          // 可能拋例外
bool ok = Enum.TryParse(input, out Rencai rc2);                  // 建議用此法

TryParse 不會拋例外,回傳 bool 表示成功與否,適合處理使用者輸入或資料庫讀取的字串。

完整 WinForms 範例:性別下拉選單

public enum Gender { 男, 女, 人妖 }

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        // 一行綁定:Enum.GetNames 直接當 DataSource
        comboBox1.DataSource = Enum.GetNames(typeof(Gender));
    }

    private void btnConfirm_Click(object sender, EventArgs e) {
        if (comboBox1.SelectedIndex == -1) return;

        string selected = comboBox1.SelectedItem as string;
        if (Enum.TryParse(selected, out Gender g)) {
            switch (g) {
                case Gender.男:   txtResult.Text = "您是一位帥哥。"; break;
                case Gender.女:   txtResult.Text = "您是一位美女。"; break;
                case Gender.人妖: txtResult.Text = "發現未知物種。"; break;
            }
        }
    }
}

執行畫面:ComboBox 顯示男/女/人妖

進階提醒

  • [Flags] 屬性:若需位元組合(如權限 Read | Write),記得加 [Flags],ToString() 會自動顯示「Read, Write」。
  • 底層型別:預設 int,可指定 enum Color : byte { ... } 節省記憶體。
  • 效能:Enum.Parse 內部用反射,高頻呼叫建議快取 Dictionary<string, TEnum>。

善用列舉,不只是「定義常數」,更是「讓非法狀態無法表示」的領域建模利器。下次見到 if (type == 1 || type == 2 ...),請毫不猶豫地重構成 enum。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved