这个问题看起来很简单。虽然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
作为只读集合?
最佳答案
Dictionary.KeyCollection
当前未实现 IReadOnlyCollection
。
但是,该接口(interface)已添加到下一版本的 .Net (v4.6) 中。您可以使用 VS 2015 预览版看到这一点。
您还可以在 this announcement 中看到(下载包含 v4.6 的所有更改的 excel 文件)
关于c# - `Dictionary<TKey, TValue>.KeyCollection` 是否实现了 `IReadOnlyCollection`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28218693/