我需要一个在构造函数
中初始化后无法更改的属性这样的事情:
private const string banknr;
public ClassName(string banknr)
{
this.banknr = banknr;
//from now on "banknr" can't be changed something like a final or const
}
但它只是不起作用,我真的不明白
答案 0 :(得分:6)
这正是readonly
关键字的作用。
private readonly string banknr;
public ClassName(string banknr)
{
this.banknr = banknr;
//from now on "banknr" can't be changed something like a final or const
}
readonly变量可以在构造函数中设置,但不能更改。
答案 1 :(得分:3)
如果您希望在初始化后无法触及值,则可以使用public class Class2
{
public readonly string MyProperty;
public Class2()
{
MyProperty = "value";
}
}
关键字:
public class Class1
{
public string MyProperty { get; private set; }
public Class1()
{
MyProperty = "value";
}
}
<强> readonly (C# Reference): 强>
您只能在以下内容中为只读字段指定值 上下文:
- 在声明中初始化变量时。
- 对于实例字段,在包含字段声明的类的实例构造函数中,或者对于静态字段,在 包含字段声明的类的静态构造函数。 这些也是传递a有效的唯一上下文 readonly字段作为out或ref参数。
如果您想要无法触及您的课程,您可以在酒店中使用私人设定者:
^.*(?=-ID)|.*[^-ID:]
答案 2 :(得分:1)
你想要readonly而不是const。差异可以在http://weblogs.asp.net/psteele/63416找到。总结: + const:仅在声明时初始化 + readonly:可以在声明或构造函数
初始化