如何为只读静态字段赋值

时间:2011-11-17 07:17:04

标签: c# .net vb.net winforms class

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

  public static class Constant
    {
        public static readonly string name;                

    }

请指导。

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

你需要一个静态构造函数

public static class Constant
{
    public static readonly string name;

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

答案 2 :(得分:1)

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;
}

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

您还可以在静态类

中创建静态构造函数
static Constant()
{
    name = "Name";
}