由于我在应用程序的多个地方使用了"System.Drawing.Color.Gainsboro“:
if (tb.BackColor.Equals(System.Drawing.Color.Gainsboro)) {...I想让它成为一个常量。但当我尝试的时候:
const System.Drawing.Color PSEUDO_HIGHLIGHT_COLOR = System.Drawing.Color.Gainsboro;...I got,“类型'System.Drawing.Color‘不能声明为常量”
???
发布于 2012-04-27 03:54:37
唯一可以为const的类型是那些在C#中具有文字表示形式的类型,因为在编译时会用文字值替换对常量的引用。没有文字方式来表示颜色(您只能通过工厂方法或使用static预先存在的颜色之一来获取颜色)。
但是,您可以使用static readonly变量来实现相同的效果。
static readonly Color PSEUDO_HIGHLIGHT_COLOR = Color.Gainsboro;有关更多信息,请参阅C#语言规范的第10.4节
常量声明中指定的类型必须是
sbyte、byte、short、ushort、int、uint、long、ulong、D13、D14、D15、D16、D17、D18、枚举类型或引用类型。
对于引用类型,唯一有效的值是字符串文字或null。
发布于 2012-04-27 03:51:35
用户定义类型(包括类、结构和数组)不能是常量
根据MSDN的说法。
发布于 2012-04-27 03:53:59
System.Drawing.Color是一个struct,它是cannot be declared constant。请尝试改用static readonly,或使用KnownColor枚举。
https://stackoverflow.com/questions/10340396
复制相似问题