如何通过 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();
}
}
最佳答案
手动枚举非常罕见(例如,与 foreach
相比)- 我建议的第一件事是:检查您是否真的需要它。但是,由于字典枚举为键值对:
IEnumerator<KeyValuePair<string,string>> enumerator = value.GetEnumerator();
应该可以。或者如果它只是一个方法变量(不是一个字段),那么:
var enumerator = value.GetEnumerator();
或更好(因为如果它不是一个字段,它可能需要本地处理):
using(var enumerator = value.GetEnumerator())
{ ... }
或最佳(“KISS”):
foreach(var pair in value)
{ ... }
但是,您也应该始终处置替换时的任何现有值。此外,仅限集合的属性非常罕见。您真的可能想检查这里是否有更简单的 API...例如,将字典作为参数的方法。
关于c# - 如何通过IDictionary进行枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5699456/