【发布时间】:2015-01-29 15:42:15
【问题描述】:
这个问题看起来很简单。虽然documentation 说是这样:
public sealed class KeyCollection : ICollection<TKey>,
IReadOnlyCollection<TKey>, IEnumerable<TKey>, ICollection, IEnumerable
以下代码给出错误:
class MyKeys<T>
{
readonly Dictionary<T, T> dict = new Dictionary<T, T> ();
public IReadOnlyCollection<T> Keys { get { return dict.Keys; } set; }
}
表示没有从KeyCollection<T> 到IReadOnlyCollection<T> 的转换。
此外,polish documentation(同样是法语)说它没有:
[SerializableAttribute]
public sealed class KeyCollection : ICollection<TKey>,
IEnumerable<TKey>, ICollection, IEnumerable
这是什么?
如果是英文文档中的错误,还有一个额外的问题:
有没有办法将Keys 设为只读集合?
【问题讨论】:
-
虽然它没有实现
IReadOnlyCollection<TKey>,但它是只读的,因为IsReadOnly返回true,Add、Remove和Clear都抛出异常。 -
我一直想知道为什么
Dictionary<TKey, TValue>.KeyCollection没有实现ISet<TKey>...
标签: c# .net dictionary