不能更改但需要在构造函数中初始化的c#变量
本文关键字:初始化 变量 构造函数 不能 | 更新日期: 2023-09-27 18:14:35
我需要一个在构造函数中初始化后不能更改的属性
像这样:
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
}
但是它就是不工作,我真的不明白
这正是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
关键字:
public class Class2
{
public readonly string MyProperty;
public Class2()
{
MyProperty = "value";
}
}
readonly (c# Reference):
只能在以下情况下为只读字段赋值背景:
- 当变量在声明中初始化时。
- 对于实例字段,在包含字段声明的类的实例构造函数中;对于静态字段,在包含字段声明的类的静态构造函数。这也是唯一可以有效传递a的上下文中readonly字段作为out或ref参数。
如果你想要的值不能被移出你的类,你可以在属性中使用私有setter:
public class Class1
{
public string MyProperty { get; private set; }
public Class1()
{
MyProperty = "value";
}
}
你想要readonly而不是const。不同之处可以在http://weblogs.asp.net/psteele/63416上找到。摘要:
- const:只在声明 时初始化
- readonly:可以在声明或构造函数中初始化