在尝试将公共方法的默认值设置为颜色时,为什么会出现错误消息?

sto*_*ist 1 c# properties

我有这样的事情:

[Description("Sets the color."),
Category("Values"),
DefaultValue(Color.White),
Browsable(true)]
public Color MyColor
{
    get
    {
        return myColor;
    }
    set
    {
        myColor = value;
    }
}
private Color myColor = Color.White;
Run Code Online (Sandbox Code Playgroud)

我在这一行收到错误:

DefaultValue(Color.White),
Run Code Online (Sandbox Code Playgroud)

如果值是布尔值,则没有问题,但是当我尝试将其设置为颜色时,我得到:属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式

任何人都可以发现问题吗?

Bry*_*ard 5

Color.White不是一个恒定的表达; 它更确切地说是一个readonly字段 static property1并涉及实例化.

编辑:

有关您的信息,另一种设置Color默认值的方法可能如下所示:

[DefaultValue(typeof(Color), "White"]
public Color MyColor
{ ... }
Run Code Online (Sandbox Code Playgroud)

1. 埃德Swangren在他的回答指出了这一点