Enum convert with the other type
這對於將參數變成可讀的String很有幫助
參考網址1
public enum EnumDays: byte { Sun = 1, Mon = 2, // ... } //then you will able to do it: EnumDays day = EnumDays.Mon; byte byteDay = (byte)day; EnumDays tempDay = (EnumDays)byteDay;
參考網址2
using System; public class CSharpLab { public enum State { Init, Open, Proc, Close, Done = 9 } public static void Test() { State st = State.Init; //列出所有名稱 foreach (string en in Enum.GetNames(typeof(State))) Console.WriteLine("Enum Name: " + en); //列舉背後有值, 預設由零開始排, 但也可自訂 //TIPS: typeof(State)與st.GetType()都可取得列舉型別 foreach (int v in Enum.GetValues(st.GetType())) Console.WriteLine("Enum Value: " + v.ToString()); //將列舉轉為字串 Console.WriteLine("Enum To String: " + st.ToString()); //將字串轉為列舉 st = (State)Enum.Parse(typeof(State), "proc", true); Console.WriteLine("String To Enum: " + st); try { Console.WriteLine("String To Enum(not found): " + Enum.Parse(typeof(State), "WTF")); } catch (Exception ex) { Console.WriteLine("Error when Enum.Parse: " + ex.Message); } //將列舉轉為數字 Console.WriteLine("Enum to Int: " + st + " " + (int)st); //將數字轉回列舉 st = (State)9; Console.WriteLine("Int to Enum: " + st); //小心數字轉換對不上時不會有錯誤,但會出現非列舉值 st = (State)100; Console.WriteLine("Int(100) to Enum: " + st); //如果數字有連續,可以用+1, -1找上一個下一個 //注意: 以下範例並未檢查邊界及數值不連續的狀況, //並非嚴謹寫法,僅為簡單示意,勿用於正式用途 st = State.Proc; State next = (State)((int)st)+1; State prev = (State)((int)st)-1; Console.WriteLine("Now = " + st + " Next = " + next + " Prev = " + prev); } }
沒有留言:
張貼留言