如何在C#中为类的静态默认属性分配默认值?

时间:2012-04-25 14:06:23

标签: c# .net c#-4.0

  

可能重复:
  default value for a static property

我可以为类的普通默认属性指定默认值。 但我无法为类的静态默认属性分配默认值,如下所示: -

    public class AppInstance
{
    [DefaultValue(25)]
    public static int AppType { get; set; }
}

当我调用AppInstance.AppType时,它总是返回0而不是25.为什么?如何在不使用私有变量声明的情况下解决它?

3 个答案:

答案 0 :(得分:5)

DefaultValueAttribute仅告诉WinForms设计器哪个值是表单或控件的属性的默认值。如果属性具有其他值,则此值将在属性窗口中显示为粗体。但它实际上并没有设定价值。

您必须在静态构造函数

中为其赋值
static MyClass()
{
    AppType = 25;
}

答案 1 :(得分:2)

您可以使用静态构造函数。在创建第一个实例或引用任何静态成员之前,会自动调用它来初始化类。

public class AppInstance
{
    public static int AppType { get; set; }

    static AppInstance()
    {
        AppType = 25;
    }
}

答案 2 :(得分:0)

在这种情况下,我没有看到使用get; set;创建静态成员的用法。也许其他人可以吗?

所以,我可能会这样做:

public class AppInstance
{
    public static int AppType = 25;
}