本文將從以下幾個方面詳細闡述c#中enum類型轉換成string類型的方法及注意事項。
一、基本語法和示例
c#中的enum類型可以看作是一組有名字的常量值,通常用於定義一組相關的常量選項,例如衣服尺碼,星期幾,顏色等。
public enum Size { XS, S, M, L, XL }
我們可以通過下面的方式將常量值轉化為對應的string類型:
string sizeStr = Size.M.ToString(); // "M"
二、自定義枚舉的描述信息
有時候我們需要將枚舉類型的值顯示為一個更直觀的字元串,例如在UI層中將其顯示為一個含義明確的文本,而不是簡單的常量值。這時我們可以為枚舉類型定義一個Description屬性”
示例代碼如下:
public enum Size { [Description("Extra Small")] XS, [Description("Small")] S, [Description("Medium")] M, [Description("Large")] L, [Description("Extra Large")] XL }
我們定義一個擴展方法,來獲取枚舉中的Description屬性值:
using System.ComponentModel; public static class EnumExtensions { public static string GetDescription(this Enum value) { FieldInfo fieldInfo = value.GetType().GetField(value.ToString()); DescriptionAttribute[] attributes = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[]; return attributes != null && attributes.Length > 0 ? attributes[0].Description : value.ToString(); } }
然後我們可以按下面的方式取得描述信息:
string sizeDesc = Size.M.GetDescription(); // "Medium"
三、枚舉值與字元串的相互轉換
除了上面提到的示例代碼外,還可以使用下面幾個內置函數來實現枚舉值與字元串的相互轉換。
1.將字元串轉換為枚舉值
可以使用 Enum.Parse() 函數將字元串轉化為對應的枚舉值,如果字元串無法轉換則會拋出ArgumentException異常,
Size mySize = (Size)Enum.Parse(typeof(Size), "M"); // Size.M
2.將枚舉值轉換為字元串
可以使用Enum.GetName()函數將枚舉中指定項的名稱以字元串形式返回:
string sizeStr = Enum.GetName(typeof(Size), Size.M); // "M"
3.獲取枚舉中所有項
可以使用Enum.GetNames()函數獲取指定枚舉的所有成員名稱組成的字元串數組:
string[] sizeNames = Enum.GetNames(typeof(Size)); // ["XS", "S", "M", "L", "XL"]
四、注意事項
在使用枚舉中的值時,需要注意轉換過程可能會產生異常,需要使用try-catch語句進行異常捕獲和處理。
try { Size mySize = (Size)Enum.Parse(typeof(Size), "2XL"); } catch (ArgumentException ex) { Console.WriteLine("無法轉換成Size類型。"); }
另外,自定義的枚舉中,如果某個成員具有相同的數值或者名稱,則編譯器會拋出錯誤。
五、總結
本文介紹了c#中將枚舉類型轉換成字元串類型的多種方法及注意事項。除了基本用法之外,還介紹了如何自定義枚舉的描述信息、枚舉值與字元串的相互轉換等內容。當我們需要在應用中展示枚舉的描述信息時,自定義枚舉的描述信息是非常有用的;而當我們需要從字元串轉換成枚舉值時,需要注意異常處理;最後提醒大家注意自定義枚舉中的命名規則,以避免出現編譯錯誤。
原創文章,作者:FKDFZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/375335.html