一、簡介 枚舉是一組命名整型常量;枚舉類型是使用 enum 關鍵字聲明的;C# 枚舉是值類型。 二、語法 枚舉的語法: public:訪問修飾符,公共的公開的,哪都可以訪問; enum:關鍵字,聲明枚舉的關鍵字; 枚舉名:要符合Pascal命名規範; 將枚舉聲明到命名空間下麵,類的外面,表示這個命名 ...
一、簡介
枚舉是一組命名整型常量;枚舉類型是使用 enum 關鍵字聲明的;C# 枚舉是值類型。
二、語法
枚舉的語法:
public enum 枚舉名 { 值1, 值2, 值3, ............ } 或者 enum 枚舉名 { 值1, 值2, 值3, ............ }
public:訪問修飾符,公共的公開的,哪都可以訪問;
enum:關鍵字,聲明枚舉的關鍵字;
枚舉名:要符合Pascal命名規範;
將枚舉聲明到命名空間下麵,類的外面,表示這個命名空間下,所以類都可以訪問這個枚舉;
三、類型轉換
我們可以將一個枚舉類型的變數跟int類型和string類型互相轉換:
1.枚舉類型預設是跟int類型相互相容的,所以可以通過強制類型轉換的語法互相轉換,當轉換一個枚舉中沒有的值的時候,不會拋異常,而是直接將數字顯示出來。
2.如果將枚舉類型轉換成string類型,則直接調用ToString().
3.如果將字元串轉換成枚舉類型則需要下麵這樣一行代碼:
(要轉換的枚舉類型)Enum.Parse(typeof(要轉換的枚舉類型),"要轉換的字元串");
如果轉換的字元串是數字,則就算枚舉中沒有,也會不會拋異常。
如果轉換的字元串是文本,如果枚舉中沒有,則會拋出異常。
備註:所有的類型都能夠轉換成string類型,調用ToString()。
四、實例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _03枚舉的練習 { public enum Sesons { 春, 夏, 秋, 冬 } public enum QQState { OnLine, OffLine, Leave, Busy, QMe } class Program { static void Main(string[] args) { Sesons s = Sesons.春; QQState state = QQState.OnLine; } } }
五、類型轉換實例
1.將枚舉類型強轉成int類型
namespace _04枚舉和int以及string類型之間的轉換 { public enum QQState { OnLine=1, OffLine, Leave, Busy, QMe } class Program { static void Main(string[] args) { #region 將枚舉類型強轉成int類型 QQState state = QQState.OnLine; //枚舉類型預設可以跟int類型互相轉換 枚舉類型跟int類型是相容的 int n = (int)state; Console.WriteLine(n); Console.WriteLine((int)QQState.OffLine); Console.WriteLine((int)QQState.Leave); Console.WriteLine((int)QQState.Busy); Console.WriteLine((int)QQState.QMe); Console.ReadKey(); #endregion } } }
2.將int類型強轉為枚舉類型
namespace _04枚舉和int以及string類型之間的轉換 { public enum QQState { OnLine=1, OffLine, Leave, Busy, QMe } class Program { static void Main(string[] args) { #region 將int類型強轉為枚舉類型 int n1 = 3; QQState state = (QQState)n1; Console.WriteLine(state); Console.ReadKey(); #endregion } } }
3.將枚舉類型轉換成字元串類型
amespace _04枚舉和int以及string類型之間的轉換 { public enum QQState { OnLine=1, OffLine, Leave, Busy, QMe } class Program { static void Main(string[] args) { #region 將枚舉類型轉換成字元串類型 //所有的類型都能夠轉換成string類型 int n1 = 10; // double n1 = 3.14; decimal n1 = 5000m; string s1= n1.ToString(); Console.WriteLine(s1); QQState state = QQState.OnLine; string s = state.ToString(); Console.WriteLine(s); Console.ReadKey(); #endregion } } }
4.將字元串轉換成枚舉類型
amespace _04枚舉和int以及string類型之間的轉換 { public enum QQState { OnLine=1, OffLine, Leave, Busy, QMe } class Program { static void Main(string[] args) { //枚舉練習 //提示用戶選擇一個線上狀態,我們接受,並將用戶的輸入轉換成枚舉類型。 //再次列印到控制臺中 Console.WriteLine("請選擇您的qq線上狀態 1--OnLine 2--OffLine 3--Leave 4--Busy 5--QMe"); string input = Console.ReadLine(); switch (input) { case "1": QQState s1 = (QQState)Enum.Parse(typeof(QQState), input); Console.WriteLine("您選擇的線上狀態是{0}",s1); break; case "2": QQState s2 = (QQState)Enum.Parse(typeof(QQState), input); Console.WriteLine("您選擇的線上狀態是{0}",s2); break; case "3": QQState s3 = (QQState)Enum.Parse(typeof(QQState), input); Console.WriteLine("您選擇的線上狀態是{0}",s3); break; case "4": QQState s4 = (QQState)Enum.Parse(typeof(QQState), input); Console.WriteLine("您選擇的線上狀態是{0}", s4); break; case "5": QQState s5 = (QQState)Enum.Parse(typeof(QQState), input); Console.WriteLine("您選擇的線上狀態是{0}", s5); break; } Console.ReadKey(); } } }