c# - 使哈希表不可变

标签 c# hashtable overriding immutability

如何从 Hashtable 派生类,其对象可以添加,但不能删除或替换?

我必须覆盖什么,特别是如何覆盖 [] 运算符?

最佳答案

在这种情况下,您应该封装它,而不是从字典派生(您应该使用它而不是哈希表)。

Dictionary 有很多方法可以更改集合,将其设为私有(private)成员更容易,然后只需实现添加和访问项的方法即可。

类似于:

public class StickyDictionary<Key, Value> : IEnumerable<KeyValuePair<Key, Value>>{

   private Dictionary<Key, Value> _colleciton;

   public StickyDictionary() {
      _collection = new Dictionary<Key, Value>();
   }

   public void Add(Key key, Value value) {
      _collection.Add(key, value);
   }

   public Value this[Key key] {
      get {
         return _collection[key];
      }
   }

   public IEnumerable<KeyValuePair<Key, Value>> GetEnumerator() {
      return _collection.GetEnumerator();
   }

}

关于c# - 使哈希表不可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1589665/

相关文章:

c# - 我可以序列化数据表或数据集以通过 C# 中的 Web 服务传输吗?

c# - 证书未正确签名

c - hsearch_r 覆盖哈希表

android - 哪些 Android Fragment 生命周期方法需要 super

assembly - 当您使用内存覆盖前缀但所有操作数都是寄存器时会发生什么?

c# - 如何通过使用接口(interface)或抽象来确保类具有静态属性?

c# - DateTime 以毫秒表示?

C# 资源数组

python - 如果使用很长的字符串作为键,在 Dict 中搜索的时间复杂度是多少?

Perl 散列的散列原理