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";
    }
}

10-01 14:39
查看更多