问题似乎很简单.虽然
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
这是什么?
如果是英文文档中的错误,还有一个奖励问题:
有没有办法让Keys成为只读集合?
解决方法
Dictionary.KeyCollection当前没有实现IReadOnlyCollection.
但是,该接口已添加到.Net的下一个版本(v4.6).您可以看到使用VS 2015预览.
您还可以在this announcement中看到(下载包含v4.6所有更改的excel文件)