C#编译器给我以下错误
CS0191:不能将只读字段分配给它(在构造函数或变量初始化程序中除外)
我是否必须将代码(在我的私有(private)函数中)移到构造函数中?听起来很尴尬。
请注意,私有(private)方法只应由构造函数调用。我希望可以使用某种属性来标记对应的方法。
最佳答案
尽管有其他帖子在说什么,但实际上是的一种(有点不寻常)的方法,它实际上是在方法中分配值:
public class Foo
{
private readonly string _field;
public Foo(string field)
{
Init(out _field, field);
}
private static void Init(out string assignTo, string value)
{
assignTo = value;
}
}
从here派生的示例。
另外,您也可以从私有(private)方法返回值,并按以下方式在构造函数中分配值:
class Foo
{
private readonly string _field;
public Foo()
{
_field = GetField();
}
private string GetField()
{
return "MyFieldInitialization";
}
}