B. *_*non 3 c# constants colors winforms
因为我在我的应用程序的多个地方使用"System.Drawing.Color.Gainsboro":
if (tb.BackColor.Equals(System.Drawing.Color.Gainsboro)) {
Run Code Online (Sandbox Code Playgroud)
......我想让它成为一个常数.但当我尝试时:
const System.Drawing.Color PSEUDO_HIGHLIGHT_COLOR = System.Drawing.Color.Gainsboro;
Run Code Online (Sandbox Code Playgroud)
...我得到了,"类型'System.Drawing.Color'不能声明为const"
???
Ada*_*son 16
唯一可以的类型const是那些在C#中具有文字表示的类型,因为在编译时使用文字值替换对常量的引用.没有字面方式来表示颜色(您只能通过工厂方法获得颜色,或者使用其中一种static预先存在的颜色获得颜色).
但是,您可以使用static readonly变量来实现相同的效果.
static readonly Color PSEUDO_HIGHLIGHT_COLOR = Color.Gainsboro;
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅C#语言规范的10.4节
在恒定声明中指定的类型必须是
sbyte,byte,short,ushort,int,uint,long,ulong,char,float,double,decimal,bool,string,枚举类型或引用类型.
对于引用类型,唯一有效的值是字符串文字或null.