Sar*_*els 4 c# foreach dictionary
我有一个继承自的类Dictionary<string, string>.在一个实例方法中,我想迭代所有KeyValuePair<string, string>的.我尝试过以下方法:
foreach (KeyValuePair<string, string> pair in base)
Run Code Online (Sandbox Code Playgroud)
但是这失败了以下错误:
在此上下文中使用关键字"base"无效
如何KeyValuePair<string, string>在派生自的类中的实例方法中迭代Dictionary<string, string>?
编辑: 我发现我可以执行以下操作:
var enumerator = base.GetEnumerator();
while (enumerator.MoveNext())
{
KeyValuePair<string, string> pair = enumerator.Current;
}
Run Code Online (Sandbox Code Playgroud)
但是,我仍然想知道是否有办法通过foreach循环来做到这一点.
编辑: 感谢有关不继承的建议Dictionary<string, string>.我正在实施System.Collections.IEnumerable, ICollection<KeyValuePair<string, string>>, IEnumerable<KeyValuePair<string, string>>, IDictionary<string, string>.
LBu*_*kin 14
首先,从.NET集合类派生通常是不明智的,因为它们不为未继承的调用提供虚方法object.通过某个基类引用传递派生集合时,这可能会导致错误.您最好实现IDictionary<T,TKey>接口并聚合实现Dictionary<,>内部 - 然后转发相应的调用.
除此之外,在您的具体情况下,您想要做的是:
foreach( KeyValuePair<string,string> pair in this ) { /* code here */ }
Run Code Online (Sandbox Code Playgroud)
该base关键字主要用于访问基类的特定成员.这不是你在这里做的 - 你试图迭代特定实例的项目......这只是this参考.
| 归档时间: |
|
| 查看次数: |
13827 次 |
| 最近记录: |