ので、私は持っています:
Dictionary<some_enumerator, int> available_spaces;
Dictionary<some_enumerator, int> occupied_spaces;
Dictionary<some_enumerator, int> total_spaces;
特定のタイプのスペースを占有するときに、占有されているタイプXのスペースの数をマークし、Occupy(enum.space_type)を呼び出す前に、使用可能なスペースがあることを確認できます。
現在、占有スペースと利用可能スペース用のシンプルなゲッター/セッターがあります。
public Dictionary<some_enumerator, int> Occupied_Spaces { get; set; }
public Dictionary<some_enumerator, int> Available_Spaces { get; set; }
public Dictionary<some_enumerator, int> Total_Spaces { get; set; }
理想的には、Occupied_Spacesを呼び出すときはいつでも、たとえばこれを行う代わりに、各キーの使用可能なスペースを再計算したいと思います(単に合計スロットから占有スロットを差し引くことによって)。
object.Occupied_Spaces[space_type]++;
object.RecalculateSpaces();
Occupied_Spacesを変更するたびに、代わりに次のようなことをしたいと思います(これが機能しないことはわかっていますが、次のようなアイデアが得られます。
public Dictionary<some_enumerator> Occupied_Spaces {
get { return _occupied_spaces; }
set { _occupied_spaces = value; RecalculateSpaces(); }
}
現在、Occupied_Spaces [key] ++を呼び出しても、Occupied_Spacesのセッターは呼び出されません(デバッグ印刷をRecalculateSpacesにスローしてテストしましたが、起動しませんでした)。
しかし、辞書の+(またはその他の基本的な演算子)をオーバーライドする方法がわかりません。これを行う簡単な方法はありますか?