2つのreadonly int
フィールドを持つクラスがあります。プロパティとして公開されます:
public class Thing
{
private readonly int _foo, _bar;
/// <summary> I AM IMMUTABLE. </summary>
public Thing(int foo, int bar)
{
_foo = foo;
_bar = bar;
}
public int Foo { get { return _foo; } set { } }
public int Bar { get { return _bar; } set { } }
}
ただし、次のコードは完全に合法なコードです。
Thing iThoughtThisWasMutable = new Thing(1, 42);
iThoughtThisWasMutable.Foo = 99; // <-- Poor, mistaken developer.
// He surely has bugs now. :-(
それが機能すると仮定することから生じるバグは、sidなものであるに違いありません。確かに、間違った開発者はドキュメントを読んでいたはずです。しかし、それは問題をコンパイルまたは実行時エラーで警告しなかったという事実を変えるものではありません。
Thing
開発者が上記の間違いを犯さないように、クラスをどのように変更する必要がありますか?
例外を投げますか?プロパティの代わりにゲッターメソッドを使用しますか?
Interfaces
です。私はそれが私がやっていることだかわからない。