所以我有:
Dictionary<some_enumerator, int> available_spaces;
Dictionary<some_enumerator, int> occupied_spaces;
Dictionary<some_enumerator, int> total_spaces;
这个想法是,当我占用给定类型的空间时,我可以标记 X 类型的空间被占用了多少,并在调用 Occupy(enum.space_type) 之前检查以确保有可用空间。
目前,我对 Occupied 和 Available 空间有简单的 getter/setter:
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 中进行测试,但没有触发)。
但我不知道如何覆盖字典的 + (或任何其他基本运算符)。有没有一种简单的方法可以做到这一点?