.NET 列舉底層型別僅支援整數型別,無法直接定義字串列舉:
// 編譯錯誤
enum Colors : string { Red = "#FF0000" }
Color 類別,建構子設為 private。static readonly 欄位作為列舉成員:Red、Green、Blue。explicit operator string(Color)、explicit operator Color(string)。public class Color
{
private Color(string value) { m_Value = value; }
private string m_Value;
public static readonly Color Red = new Color("#FF0000");
public static readonly Color Green = new Color("#00FF00");
public static readonly Color Blue = new Color("#0000FF");
// 轉換運算子與 Equals 處理見下篇
}
Color c1 = Color.Red;
string s1 = (string)c1; // "#FF0000"
Color c2 = (Color)"#00FF00"; // Color.Green