c# - 如何通过IDictionary进行枚举

标签 c#

如何通过 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/

相关文章:

c# - 根据多个条件过滤 CollectionView

c# - 在存储库线程中锁定单个 session 是否安全? (N休眠)

c# - 永久修改App.config C#

c# - 在 Asp.Net 页面上单击“删除”按钮时创建确认消息

c# - HTML <tr> 标签的正则表达式

c# - 如何以编程方式在azure网站中创建虚拟应用程序和目录

c# - 将逗号分隔的 List<string> 转换为 List<Int>

c# - 调用覆盖方法时如何强制执行方法调用(在基类中)?

c# - 使用分组依据以删除重复项

c# - 如何使用 Visual Studio 2015 让 EnumMember 在 ASP.net 5 中工作