我有一个静态和只读的字段。要求是应该在登录时将值分配给字段,之后应该只读取。我怎样才能做到这一点?
public static class Constant
{
public static readonly string name;
}
请指导。
答案 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";
}