雖然說可以在程式的攥寫中使用簡單的數值或是字串做表示也是可行的,但是總是不太直覺,
例如說,人員的性別,帶入的數值如果是用0、1或是F、M來表示,
要是沒有好好的下註解說明,維護程式的人還真的不知道該給什麼值,
如果有個方法可以讓維護人員可以快速又直覺的知道有些什麼資料可以帶入,這樣就很方便了。
實作
在一個Person的類別中先建立好PersonGender的Enum
1: /// <summary>
2: /// 性別
3: /// </summary>
4: public enum PersonGender
5: {
6: Female = 0,
7: Male = 1,
8: Unknown = 2
9: }
然後Person類別的性別屬性型態要指定這個Enum的名稱
1: /// <summary>
2: /// 人員性別
3: /// </summary>
4: private PersonGender _Gender;
5:
6: public PersonGender Gender
7: {
8: get{ return _Gender; }
9: set{ _Gender = value; }
10: }
完成,如下圖
在ASP.NET輸入表單中,也可以使用DropDownList去Bind這個Enum
1: //Gender
2: ddlGender.DataSource = Enum.GetNames(typeof(Person.PersonGender));
3: ddlGender.DataBind();
如下圖所示
而取得所選值的方式,用的是 Enum.Parse(),取回的是一個Object,所以要記得做型態轉換,
這樣一來就可以取得Enum的列舉值
1: //取得 0 1 2的數值
2: int _value = (int) P.PersonGender;
而因為存入資料庫的資料是Enum的列舉值(就是0 1 2 ...),所以由數值再轉回列舉名稱一樣也可以使用Enum.Parse()方法
1: //得到 Female Male Unknown
2: P.Gender = (Person.PersonGender)Enum.Parse(typeof(Person.PersonGender), dr["Gender"].ToString());
以上
在一些輸入限定資料的地方,可以多多使用 Enum的方式,讓程式維護更加清楚與容易。
Enum.Parse 方法
http://msdn.microsoft.com/zh-tw/library/system.enum.parse(VS.80).aspx
沒有留言:
張貼留言