繁体   English   中英

如何为只读静态字段分配值

[英]how to assign value to readonly static field

我有一个静态且只读的字段。 要求是该值应在登录时分配给该字段,之后应为只读。 我怎样才能做到这一点?

  public static class Constant
    {
        public static readonly string name;                

    }

请指导。

如果声明一个只读字段,则只能在类的构造函数中进行设置。 您可以做的就是实现一个仅具有吸气剂的属性,并公开一个在登录序列中用来更改值的更改方法。 程序的其他部分可以有效地使用该属性,不允许它们更改值。

您需要一个静态构造函数

public static class Constant
{
    public static readonly string name;

    static Constant()
    {
        name = "abc";
    }
}
public static class Constant
{
    public static string Name
    {
        get
        {
            return name;
        }
        set
        {
            if (name == null)
                name = value;
            else
                throw new Exception("...");
        }
    }
    private static string name;
}

只需在声明(或构造函数)中分配值,如下所示:

public static class Constant     
{
    public static readonly string name = "MyName";
} 

readonly是编译器的糖,告诉他,您不打算在构造函数外部更改值。 如果这样做,他将产生一个错误。

您还可以在静态类中创建静态构造函数

static Constant()
{
    name = "Name";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM