C# 集合類Dictionary的遍歷和修改(防止錯誤:集合已修改;可能無法執行列舉操作。)
C#中直接對集合Dictionary進行遍歷並修改其中的值,會報錯,如下程式碼就會報錯:集合已修改;可能無法執行列舉操作。程式碼如下
public void ForeachDic() { Dictionary<String, Int32> dic = new Dictionary<String, Int32>(); dic.Add("1", 10); dic.Add("2", 20); dic.Add("3", 30); foreach (KeyValuePair<String, Int32> kvp in dic) { Console.WriteLine(String.Format("Key:{0}; Value:{1}", kvp.Key, kvp.Value)); dic[kvp.Key] = 100;//此操作會報錯:集合已修改;可能無法執行列舉操作。 } }
解決方法就是我們可以另外建立一個數組來迴圈修改集合值,程式碼如下:
private void ForeachDic() { Dictionary<String, Int32> dic = new Dictionary<String, Int32>(); dic.Add("1", 10); dic.Add("2", 20); dic.Add("3", 30); String[] keyArr = dic.Keys.ToArray<String>(); for (int i = 0; i < keyArr.Length; i++) { dic[keyStr[i]] = dic[keyStr[i]] + 1; } }
相關推薦
C# 集合類Dictionary的遍歷和修改(防止錯誤:集合已修改;可能無法執行列舉操作。)
C#中直接對集合Dictionary進行遍歷並修改其中的值,會報錯,如下程式碼就會報錯:集合已修改;可能無法執行列舉操作。程式碼如下 public void ForeachDic() { Dictionary<String, In
for遍歷Dictionary字典 解決foreach修改字典報集合已修改:可能無法執行列舉操作
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program
C#中foreach出現“集合已修改 可能無法執行列舉操作”的解決方法
不要在列舉集合的操作(例如foreach)中去執行修改集合的操作。很多文章中提出解決方法是將foreach改為for迴圈,這裡記錄一種簡便方法。如果需要修改集合,那麼你應該先使用 ToArray() 方法,例如?1234foreach (var x in Mylist.ToA
【專案總結】ForEach時出錯報"集合已修改;可能無法執行列舉操作"
背景 選中全選時,把ListView對應的項選中 程式碼 m_PickServer.ForEach(delegate(string n) { foreach (ListViewIt
Reporting Services 在WIN7和2008下出現“授予的許可權不足,無法執行此操作。 (rsAccessDenied)”的解決辦
最近剛剛接觸Sql server的Reporting Services,使用它做報表。做好之後在瀏覽器下瀏覽時出現了一個錯誤:“為使用者“Caishy-PC\Caishy”授予的許可權不足,無法執行此操作。 (rsAccessDenied)”。 在谷歌上搜索此問題的解決辦法
java中常見集合類的遍歷
一、前言 我們經常在工作當中使用到集合,java當中的集合類較多,且自帶有豐富方法可對集合中的元素進行靈活操作,我們在使用時不必考慮資料結構和演算法實現細節,只需建立集合物件直接使用即可,這給我們帶來了極大的便利。本文對日常工作中常用的集合遍歷問題進行簡單
Java中集合類set、List和map的遍歷方式
Java中集合類的遍歷方式 Java中集合分為set、List和map。 1.set集合 set集合常用的有兩種遍歷方式: Set<String> set = new HashSet<String>(); 第一種利用for迴圈: for(S
C# winForm 遍歷容器控件內所有Label,修改其背景色
tab () PE windows clas out ont code tostring //容器控件為tableLayoutPanel1 foreach (Control label in tableLayoutPanel1.Con
C語言由後序遍歷和中序遍歷重構二叉樹練習
1 由中根序列和後根序列重建二叉樹(10分) 題目內容: 我們知道如何按照三種深度優先次序來周遊一棵二叉樹,來得到中根序列、前根序列和後根序列。反過來,如果給定二叉樹的中根序列和後根序列,或者給定中根序列和前根序列,可以重建一二叉樹。本題輸入一棵二叉樹的中根序列和後根序列,要求在記憶體中
C語言根據前序遍歷和後續遍歷還原二叉樹,並輸出二叉樹的高度
7-23 還原二叉樹 (25 point(s)) 給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。 輸入格式: 輸入首先給出正整數N(≤50),為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為N的不包含重複英文字母(區別大小寫)的字串
對dataframe的行和列進行遍歷和修改
首先先定一個這樣的字典,然後我們用不同的方法對其遍歷和修改 字典df df=pd.DataFrame({"A":[1,2,3,4],"B":[5,6,7,8],"C":[1,1,1,1]}) A B C 0 1 5 1 1 2 6 1 2 3 7 1 3
C++ 前序遍歷和中序遍歷重構二叉樹(劍指offer)
題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 這道題之前做過幾次,以前
中序遍歷和後序遍歷求類層序遍歷
PTA-ZigZagging on a Tree (25 分) Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determin
C++拾趣——STL容器的插入、刪除、遍歷和查詢操作效能對比(ubuntu g++)——遍歷和查詢
遍歷 從前往後 元素個數>15000 traversal_begin_16384_highest 表現最差的是unordered_multiset。其在遍歷到1000個左右的元素時發生較高的延時操作,然後又穩定下來。 除了
使用C#操作二叉樹的插入查詢遍歷和列印(程式碼)
Node類: public class Node { public int Item { set; get; } //節點資料 public Node LeftChild { set; get; } //左子節點的引用
JSP頁面通過c:forEach標籤迴圈遍歷List集合
<c:forEach>標籤有如下屬性: 屬性 描述 是否必要 預設值 items 要被迴圈的資訊 否 無 begin 開始的元素(0=第一個元素,1=第二個元素) 否 0 end 最後一個元
16 API-集合(List的子類(ArrayList_Vector_LinkedList,集合巢狀遍歷),JDK5新特性(泛型,增強for迴圈,靜態匯入,可變引數)
1:List的子類(掌握) (1)List的子類特點ArrayList:底層資料結構是陣列,查詢快,增刪慢執行緒不安全,效率高Vector:底層資料結構是陣列,查詢快,增刪慢執行緒安全,效率低LinkedList:底層資料結構是連結串列,查詢慢,增刪快執行緒不安全,效率高
c++實現二叉樹的插入、刪除、查詢、遍歷和樹形列印
binary_tree.h 宣告 #ifndef BINARY_TREE #define BINARY_TREE #include "util.h" template<typename T> class tree_node { public: tree_
集合Set迭代器遍歷和陣列遍歷
import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class IteratorAndArra
C語言實現圖的鄰接矩陣儲存結構及深度優先遍歷和廣度優先遍歷
DFS的核心思想在於對訪問的鄰接節點進行遞迴呼叫;BFS的核心思想在於建立了一個鄰接節點的佇列。 在Dev C++中除錯執行通過。 用下圖進行了測試。 #include <stdio.h> #define MaxVertexNum 50 #defin