C#在foreach循環中修改字典等集合出錯的處理

C#在foreach循環中修改字典等集合出錯:System.InvalidOperationException: Collection was modified; enumeration operation may not execute.這是由於在foreach中不容許修改集合,可經過以下方式修改dictPublish的值,如:orm

Dictionary<string, string> _dict = new Dictionary<string, string>(dictPublish);
 if ((_dict != null) && (_dict.Count != 0))
{
      foreach (KeyValuePair<string, string> item in _dict)
      {
            dictPublish[item.Key] = "";
       }
}索引

若是用直接賦值的方式,如Dictionary<string, string> _dict = dictPublish;也是不行的,會報一樣的錯誤。理由嘛,引用類型所致。事件

WinForm中綁定到下拉框的數據源的成員設定順序不一樣,則會觸發SelectedIndex改變事件的次數也不同。以下方式只觸發一次:string

ddl.DataSource=null;
ddl.ValueMember="Key";
dd.DisplayMember="Value";
dd.DataSource=new BindingSource(dict,null);
若是數據源不爲空的話,默認綁定到第一項,此時若是還有ddl.SelectedIndex=0則不引起索引改變事件。it

相關文章
相關標籤/搜索