覆盖Dictionary<K,V>.KeyCollection的方法

3

我想从 Dictionary<K,V> 继承,但我的问题是,在查询 Dictionary.Keys(也就是字典的 KeyCollection)时,我想要覆盖它们。怎样解决这个问题呢?

谢谢。

1个回答

7
  • 封装 Dictionary<K,V>

并且

  • 实现 IDictionary<K,V>

或者

public new YourType Keys
{
    get
    {
        return yourVersion;
    }
}

注意:

  • IDictionary<K,V>.Keys 的类型为 ICollection<Key>

  • Dictionary<K,V>.Keys 的类型为 Dictionary<K, V>.KeyCollection,但它被标记为 sealed,因此您将无法继承它,因此选项1似乎更加现实。


3
我肯定会推荐您的第一个选项(封装Dictionary<K,V>并实现IDictionary<K,V>),否则当您将您的字典转换为IDictionary<K, V>时,由于使用了new关键字,您会发现您的Keys属性被忽略了。 - Justin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接