关于Dictionary.KeyCollection

limengchen 2007-03-04 01:43:22
KeyCollection实现了ICollection<T>接口,但却没有ICollection<T>中的Add等方法,为什么?
...全文
426 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yic_sword 2007-03-05
  • 打赏
  • 举报
回复
谢谢.
syeerzy 2007-03-04
  • 打赏
  • 举报
回复
接口可以显式实现,也可以隐式实现
runrunrun 2007-03-04
  • 打赏
  • 举报
回复
显示接口继承。虽然直接看不见,但是可以先强制转换成ICollection<T>再调用
syeerzy 2007-03-04
  • 打赏
  • 举报
回复
http://www.cnblogs.com/zhenyulu/archive/2006/04/18/377705.html
yic_sword 2007-03-04
  • 打赏
  • 举报
回复
搞不懂了.帮顶
可能Reflector显示的代码也有问题
limengchen 2007-03-04
  • 打赏
  • 举报
回复
但是实现接口里的方法不是都应该是public的吗?
要不的话下面这段程序就运行不了了
Dictionary<int, int> d=new Dictionary<int, int>();
f(d.Keys);

void f(ICollection<T> c)
{
c.Add(default(T));
}
yic_sword 2007-03-04
  • 打赏
  • 举报
回复
那Reflector看了一下,有Add方法,但是被隐藏了(private).
void ICollection<TKey>.Add(TKey item)
{
ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_KeyCollectionSet);
}

因为key和Value需要成对添加吧,所以公开此方法没有意义.
yic_sword 2007-03-04
  • 打赏
  • 举报
回复
我也想知道

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧