私は次のコードをお持ちの場合:プライベートコンパイラで生成された変数はセッターのために作成されプライベート-setterプロパティ
public class MyClass
{
public string myName { get; private set; }
public string myId { get; set; }
}
を。私はsetterがオブジェクトの初期化のためだけにアクセスできないようにしたい。しかし、myName変数を最初に設定するにはどうすればよいですか?オブジェクトの初期化について読ん
は、私は、次を発見した:
...それは読み取り専用と 基礎となるストレージを表す プライベートフィールドは、私たちが使用することはできません コンパイラが生成した名前を持っていますコンストラクタを使用して を割り当てます。ソリューションが使用することです[...]オブジェクト初期化子
ソリューションを使用するように、そして、次のようになります。
MyClass mc = new MyClass {
myName = "What ever",
myId = "1234"
};
しかし、このことをコトコンパイラエラーで終わる:
setアクセサーにアクセスできないため、プロパティまたはインデクサが 「MyClass.MyClass.myName」 は、この文脈で使用することはできません
オブジェクトの初期化を使用してこの値を設定する方法はありますか?存在する場合、それを行う正しい方法は何ですか?
ありがとう、私は3.0の新機能を使用してこれを達成できるかどうかを学生に見せたいと思っていましたが、答えはノーと思われます。今私は引用符を持っている本の正誤表を提出する必要があります:P – jluna