如果我有以下代码:
public class MyClass
{
public string myName { get; private set; }
public string myId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
为setter创建一个私有编译器生成的变量.我希望只有对象初始化才能访问setter.但是,如何初始设置myName变量?
阅读对象初始化我发现以下内容:
...它是只读的,表示底层存储的私有字段有一个编译器生成的名称,我们不能在构造函数中使用它来分配它.解决方案是使用对象初始化器
那么,解决方案是使用:
MyClass mc = new MyClass {
myName = "What ever",
myId = "1234"
};
Run Code Online (Sandbox Code Playgroud)
但这最终会导致编译器错误:
属性或索引器'MyClass.MyClass.myName'不能在此上下文中使用,因为set访问器不可访问
那么,有没有办法使用对象初始化来设置此值?如果有,做正确的方法是什么?