首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

模擬字串型別列舉(二):轉換運算子、等值比較與完整程式碼

     編輯:關於C語言

明確轉換運算子實作

public static explicit operator string(Color value) => value.m_Value;

public static explicit operator Color(string value)
{
    switch (value)
    {
        case "#FF0000": return Red;
        case "#00FF00": return Green;
        case "#0000FF": return Blue;
        default: throw new InvalidCastException();
    }
}

等值比較說明

由於所有 Color 實例皆來源於靜態唯讀欄位(單例模式),參考相等即代表值相等,故無需額外覆寫 Equals 或 ==/!= 運算子。

完整 Color 類別

public class Color
{
    private Color(string value) { m_Value = value; }
    private string m_Value;

    public static explicit operator Color(string value)
    {
        switch (value)
        {
            case "#FF0000": return Red;
            case "#00FF00": return Green;
            case "#0000FF": return Blue;
            default: throw new InvalidCastException();
        }
    }
    public static explicit operator string(Color value) => value.m_Value;
    public override string ToString() => 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");
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved