【问题标题】:How to assign default value for a static default property of a class in C#? [duplicate]如何在 C# 中为类的静态默认属性分配默认值? [复制]
【发布时间】:2012-04-25 14:06:22
【问题描述】:

可能重复:
default value for a static property

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

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

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

【问题讨论】:

标签: c# .net c#-4.0


【解决方案1】:

DefaultValueAttribute 只告诉WinForms 设计器哪个值是表单或控件属性的默认值。如果该属性有另一个值,则该值将在属性窗口中显示为粗体。但它实际上不会设置值。

你必须在静态构造函数中给它赋值

static MyClass()
{
    AppType = 25;
}

【讨论】:

    【解决方案2】:

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

    public class AppInstance
    {
        public static int AppType { get; set; }
    
        static AppInstance()
        {
            AppType = 25;
        }
    }
    

    【讨论】:

    • 对谁投反对票,介意告诉我我的答案有什么问题吗?
    • 它没有评论使用默认值属性的问题,这是真正让 OP 感到困惑的地方。
    【解决方案3】:

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

    所以,我可能会这样做:

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

    【讨论】:

    • 呃,投反对票。请解释一下。
    猜你喜欢
    • 2011-02-05
    • 1970-01-01
    • 2015-06-17
    • 2011-02-23
    • 2013-02-02
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多