C#变量无法更改但需要在构造函数中初始化

时间:2015-09-24 16:38:54

标签: c# constructor const final

我需要一个在构造函数

中初始化后无法更改的属性

这样的事情:

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
}

但它只是不起作用,我真的不明白

3 个答案:

答案 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:可以在声明或构造函数

初始化