一提起枚舉,我想各位是熟悉得無法形容的了。枚舉有啥用?枚舉就是用來對一系列可選值進行規范 。
舉個例子說,
定義一個關於廁所的枚舉,通常我們見到的廁所有男廁,女廁,或者狗 廁。是吧,估計你走在大街上很少看到有龜廁的吧。因此,為了讓使用我們代碼的人能有一個規范供他 參考,於是我們會把男廁、女廁和狗廁三種可選項定義在一個枚舉類型“廁所”中。
再比如,我 們在開發一個下象棋的應用程序時,在開始時對陣雙方要選一方模子,而我們有效的選項是紅方或黑方 (有的是紅方和綠方),為了防止有的玩家選到了白方,藍方之類不符合規范的顏色,我們就可以定義 一個枚舉來限定之。
先說枚舉的第一件私事——Enum.GetNames方法。
這個方法可以把 指定枚舉的所有成員的名字返回到一個字符串數組中。比如我們有一個枚舉:
enum rencai { 白癡, 奇才, 鬼才 };
於是執行Enum.GetNames( typeof( rencai ) ) 後會返回一個字符串數組,這個字符串數組就包含:白癡,奇才,鬼才三個元素。
這個方法對於用來把枚舉的成員綁定到一個列表框,或者一個下拉列表框時比較實用。
枚舉的第二件私房事——Parse或TryParse
這個和int.Parse差不多,可以把表示枚舉成員的名 稱的字符串轉化為指定枚舉類型的對應的值。
如上面的人才枚舉,如果把 “白癡”傳給Parse方 法,這樣就可以返回一個表示白癡的枚舉值。
簡單示例
下面我舉一個人類歷史上最簡 單的例子。
這是一個WinForm程序,我定義了一個表示性別的枚舉,它包含三個值,表示三種性 別:
enum Gender { 男, 女, 人妖 }
然後,在程序運行時,用GetNames方法把Gender枚舉的所有成員的名字取出來,綁定到 ComboBox中,這樣下拉列表中就限定了這三個選項了。
// 將可用的效值枚舉值放到ComboBox 中 var items = Enum.GetNames(typeof(Gender)); this.comboBox1.DataSource = items;
然後在單擊按鈕後,用Parse方法從ComboBox選擇項的 字符串中轉換成Gender的指定的值了。
private void button1_Click(object sender, EventArgs e) { if (this.comboBox1.SelectedIndex == -1) { return; } string enumItem = this.comboBox1.SelectedItem as string; if (!string.IsNullOrEmpty(enumItem)) { Gender gd = (Gender)Enum.Parse(typeof(Gender), enumItem); switch (gd) { case Gender.男: this.textBox1.Text = "您是一位帥哥。"; break; case Gender.女: this.textBox1.Text = "你是一位美女。"; break; case Gender.人妖: this.textBox1.Text = "發現未知物種。"; break; default: break; } } }
今天說的內容不多,不過 應該還較為實用的。
查看本欄目