Sig*_*erm 3 c# enums unity-game-engine
考虑这种情况.
struct Color(由别人写)enum ColorCode一个实现html命名的颜色代码.ColorCode为的静态函数Color我希望能够这样做:
Color tmp = ....;
tmp = ColorCode.Aqua;
Run Code Online (Sandbox Code Playgroud)如何在没有复制粘贴文本140次的情况下执行此操作?
ColorCode只要上面的行有效,我真的不在乎(枚举,类,等等).
问题:
C#不允许我为枚举定义运算符.我也没有任何宏来制作一些很好的人类可读表格ColorCode.
限制:
内容ColorCode应该是ints,但应该是可分配/可兑换的Color.
代码片段:
public enum ColorCode{
AliceBlue = 0xF0F8FF,
AntiqueWhite = 0xFAEBD7,
Aqua = 0x00FFFF,
Aquamarine = 0x7FFFD4,
Azure = 0xF0FFFF, ///Repeat 140 times
...
}
public static Color colorFromCode(ColorCode code){
....
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 10
你可以在枚举上写一个扩展方法:
public static Color ToColor(this ColorCode colorCode)
{
...
}
Run Code Online (Sandbox Code Playgroud)
然后你可以:
Color tmp = ColorCode.Aqua.ToColor();
Run Code Online (Sandbox Code Playgroud)
它不是一个隐含的转换,但它可以像你可能获得的那样可读.