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 或 ==/!= 運算子。
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");
}