會員登入 新朋友?立刻註冊
[說明]
文章會慢慢移新精讚 //n.sfs.tw
2019/2/23 星期六     [文章分類及列表]
精讚Blog logo 部落格是自己寫爽的
精讚部落 > 後端程設 > C# 寫法
C# 列舉(enum)型別 無次要群組 列印 推薦
作者或來源 瘦河馬 2010-03-10 14:35:30
關鍵字 1enum 2列舉 3c#
此文完整連結 http://n.zipko.info/402.html
文章歡迎轉載,請尊重版權註明連結來源。

在.NET中,有一種有趣的型別,叫作列舉(enum),用來宣告列舉型別 (Enumeration),是由一組名為列舉值清單的具名常數所構成的獨特型別。每個列舉型別都有基礎型別,此基礎型別可以是除了 char 型別以外的任何整數型別。列舉項目的預設基礎型別是 int。根據預設,第一個列舉值的值是 0,而每一個接下來的列舉值會遞增 1。

嚴格說起來,enum算是整數(int)型別,當然,也可以指定成long, byte, short.....等型別,我們叫作「基底型別」。例如我把可能的操作先定義成一個enum
public enum Operation_state { E_Get_Dir, E_Get_List, E_Up_Dir, E_Goto_Dir, E_Change_Driver, E_Get_Drv_List, E_Get_File, E_Put_File };

在預設的情況下,E_Get_Dir=0, E_Get_List=1, E_Up_Dir=2,以此類推。

接下來,如果我們結合Switch就會很好用:
//宣告,Operation_state 型別已於上面宣告,所以我們宣告 CmdState 為此型別。
Operation_state CmdState;

//定義值
CmdState = Operation_state.E_Get_List;
//這樣給值是會出錯的喔
//CmdState = 1;


switch (CmdState)
{
    case Operation_state.E_Get_Dir:
        break;
    case Operation_state.E_Get_List:
        break;
    case Operation_state.E_Up_Dir:
        break;
    case Operation_state.E_Get_File:
        break;
    default:
        break;
}

string cmd=CmdState.ToString();
//cmd="E_Get_List"

int cmd_Id=(int)CmdState;
//cmd_Id=1

enum型別的轉換是很頭痛的問題:
以下範例是ComPort的三個enum型別的變數 parity, stopbits, handshake,要從字串轉換成enum型別。注意enum 型別的轉換方法:

parity = (System.IO.Ports.Parity)Enum.Parse(typeof(System.IO.Ports.Parity), "None");

stopbits = (System.IO.Ports.StopBits)Enum.Parse(typeof(System.IO.Ports.StopBits), "One");

handshake = (System.IO.Ports.Handshake)Enum.Parse(typeof(System.IO.Ports.Handshake), "None");

參考連結:
http://msdn.microsoft.com/zh-tw/library/sbbt4032(VS.80).aspx

END
F B 留 言 版

留言結束請重新整理網頁顯示留言
相 關 文 章
同 群 組 其 他 文 章
隨 機 文 章
精讚部落版權所有(c) JinZan Blog http://n.zipko.info Author axer@tc.edu.tw. 最佳瀏器為Firefox,本網頁不支援IE6。[文章分類及列表]
本站最佳瀏覽解析度1024x768 網站建置 2009.11