KeyCollection实现了ICollection<T>接口,但却没有ICollection<T>中的Add等方法,为什么?

解决方案 »

  1.   

    那Reflector看了一下,有Add方法,但是被隐藏了(private).
    void ICollection<TKey>.Add(TKey item)
    {
    ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_KeyCollectionSet);
    }因为key和Value需要成对添加吧,所以公开此方法没有意义.
      

  2.   

    但是实现接口里的方法不是都应该是public的吗?
    要不的话下面这段程序就运行不了了
    Dictionary<int, int> d=new Dictionary<int, int>();
    f(d.Keys);void f(ICollection<T> c)
    {
       c.Add(default(T));
    }
      

  3.   

    http://www.cnblogs.com/zhenyulu/archive/2006/04/18/377705.html
      

  4.   

    显示接口继承。虽然直接看不见,但是可以先强制转换成ICollection<T>再调用