如何通过IDictionary枚举?请参考下面的代码。
public IDictionary<string, string> SelectDataSource
{
set
{
// This line does not work because it returns a generic enumerator,
// but mine is of type string,string
IDictionaryEnumerator enumerator = value.GetEnumerator();
}
}
答案 0 :(得分:6)
手动枚举非常罕见(例如与foreach
相比) - 我建议的第一件事是:检查你真的需要它。但是,由于字典枚举为键值对:
IEnumerator<KeyValuePair<string,string>> enumerator = value.GetEnumerator();
应该有效。或者,如果它只是 方法变量(不是字段),那么:
var enumerator = value.GetEnumerator();
或更好(因为如果它不是一个字段,它可能需要本地处理):
using(var enumerator = value.GetEnumerator())
{ ... }
或最好(“KISS”):
foreach(var pair in value)
{ ... }
但是,您还应该在替换时始终处置任何现有值。此外,仅限于设置的属性非常罕见。您真的可能想要检查这里没有更简单的API ...例如,将字典作为参数的方法。
答案 1 :(得分:4)
foreach(var keyValuePair in value)
{
//Do something with keyValuePair.Key
//Do something with keyValuePair.Value
}
OR
IEnumerator<KeyValuePair<string,string>> enumerator = dictionary.GetEnumerator();
using (enumerator)
{
while (enumerator.MoveNext())
{
//Do something with enumerator.Current.Key
//Do something with enumerator.Current.Value
}
}
答案 2 :(得分:2)
如果您只想枚举它,只需使用foreach(var item in myDic) ...
进行示例实现,请参阅MSDN Article。
答案 3 :(得分:-1)
await Promise.race([
page.waitForXPath("//*[contains(., 'GNRE - Web Service')]"),
page.waitForXPath("//*[contains(., 'Não há dados')]")
])