如何给只读静态字段赋值

本文关键字:字段 赋值 静态 只读 | 更新日期: 2023-09-27 18:15:01

我有一个静态的只读字段。要求在登录时将该值分配给该字段,然后将其设置为只读。我该怎么做呢?

  public static class Constant
    {
        public static readonly string name;                
    }

请导游。

如何给只读静态字段赋值

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

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;
    static Constant()
    {
        name = "abc";
    }
}

只需在声明(或构造函数)中像这样赋值:

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

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

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

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