2
私はgetterとsetterを持ついくつかの属性を持つクラスを持っています。私はこのクラスのオブジェクトを不変にしたい。私はセッターにvoidの代わりに戻り値の型を与えると考えていました。System.Collections.Immutableクラスの関数に行われています。今のところ私はこのようにそれをやった:C#でクラスの新しいインスタンスを返すセッターを作る方法は? (オブジェクトを不変にするため)
MyImmutableClass
{
public int MyAttribute { get; }
public MyImmutableClass SetMyAttribute(int attribute)
{
return new MyImmutableClass(attribute, ...);
}
...
public MyImmutableClass(int attribute, ...)
{
MyAttribute = attribute;
...
}
}
は、それが行われる必要がありますどのようにこのですか、より良い/よりよい方法はありますか?例えば、普通のセッターをmoddifyすることはできますか?
なぜあなたは戻ってあなたはないはあなたが行うように読み取り専用のプロパティを持つことによって、もはや変更することができ、オブジェクトをあなたを与える作成方法、に全力を尽くしますあなたは不変クラスにセッターを持っていますか?もっともきれいな方法は、意味的に状態を変更するメソッドを避け、getterだけを持つ契約で明示的に設計することです。 「変更」では、ビルダーまたはプロトタイプのデザインパターンを使用して明示的に別のクラスを作成できます。 – ironstone13