/// <summary>
        /// 初始化一个Dic
        /// </summary>
        public static void mainTest()
        {
            Dictionary<String, Int32> dic = new Dictionary<String, Int32>();
            dic.Add("1", 1);
            dic.Add("2", 2);
            dic.Add("3", 3);

Console.WriteLine("Org=============");
            foreachTravelDic(dic);

modifyDic1(dic);
            Console.WriteLine("modify1============="); foreachTravelDic(dic); modifyDic2(dic); Console.WriteLine("modify2=============");
            foreachTravelDic(dic);

Console.ReadKey();
        }

        /// <summary>
/// foreach遍历Dictionary
/// </summary>
/// <param name="dic"></param>
public static void foreachTravelDic(Dictionary<String, Int32> dic)
{
foreach (KeyValuePair<String, Int32> kvp in dic)
{
Console.WriteLine(String.Format("Key:{0}; Value:{1}", kvp.Key, kvp.Value));
//dic[kvp.Key] = 2;//此操作会报错
}
} /// <summary>
///使用dic.Keys.ToArray方法遍历时更改Dic
/// </summary>
/// <param name="dic"></param>
private static void modifyDic2(Dictionary<String, Int32> dic)
{
String[] keyStr = dic.Keys.ToArray<String>();
for (int i = 0; i < keyStr.Length; i++)
{
dic[keyStr[i]] = dic[keyStr[i]] + 22;
}
} /// <summary>
/// 使用dic.Keys.CopyTo方法遍历时更改Dic
/// </summary>
/// <param name="dic"></param>
private static void modifyDic1(Dictionary<String, Int32> dic)
{
int dicCount = dic.Keys.Count;
String[] strKey = new String[dicCount];
dic.Keys.CopyTo(strKey, 0);//支持.net2.0
for (int i = 0; i < strKey.Length; i++)
{
if (dic.ContainsKey(strKey[i]))
{
dic[strKey[i]] = dic[strKey[i]] + 11;
}
}
}

output:

Org=============
Key:1; Value:1
Key:2; Value:2
Key:3; Value:3
modify1=============
Key:1; Value:12
Key:2; Value:13
Key:3; Value:14
modify2=============
Key:1; Value:34
Key:2; Value:35
Key:3; Value:36

摘自:http://www.cnblogs.com/softidea/archive/2013/09/27/3342941.html

Dictionary的遍历和修改的更多相关文章

  1. C# DIctionary:集合已修改,可能无法执行枚举操作

    C#中直接对集合Dictionary进行遍历并修改其中的值,会报错,如下代码就会报错:集合已修改;可能无法执行枚举操作.代码如下 public void ForeachDic() { Dictiona ...

  2. Python面试题目之(针对dict或者set数据类型)边遍历 边修改 报错dictionary changed size during iteration

    # result 是一个字典, 把里面属性值是None的属性删除 for key in result: if not result[key]: del result[key] continue 但是报 ...

  3. jackson中JSON字符串节点遍历和修改

    有些场景下,在实现一些基础服务和拦截器的时候,我们可能需要在不知道JSON字符串所属对象类型的情况下,对JSON字符串中的某些属性进行遍历和修改,比如,设置或查询一些报文头字段. 在jackson中, ...

  4. c# Dictionary的遍历和排序

    c# Dictionary的遍历和排序 c#遍历的两种方式 for和foreach for: 需要指定首位数据.末尾数据.数据长度: for遍历语句中可以改变数据的值: 遍历规则可以自定义,灵活性较高 ...

  5. C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素

    01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...

  6. 遍历并修改dictionary的值

    var dictionary = clb_Select.Items.Cast<object>().ToDictionary(item => item.ToString(), item ...

  7. NSArray遍历和修改崩溃

    //一.代码 NSArray *array = [self.dataList mutableCopy]; 或 NSArray *array = [NSArray arrayWithArray:self ...

  8. c# Dictionary的遍历和排序(转)

    c#遍历的两种方式 for和foreach for: 需要指定首位数据.末尾数据.数据长度: for遍历语句中可以改变数据的值: 遍历规则可以自定义,灵活性较高 foreach: 需要实现ienume ...

  9. POJ3276(遍历+区间修改)

    http://poj.org/problem?id=3276 题意:n(n<=5000)头牛站成线,有朝前有朝后的的,然后每次可以选择大小为k的区间里的牛全部转向,会有一个最小操作m次使得它们全 ...

随机推荐

  1. scanf(),fscanf的详解

    我们这里只讨论fscanf(或者scanf)的格式,因为这些细节在其他贴里并没有涉及,阅读此文,你可以少走一些弯路.只讲结果,深层原因并不分析. FILE *pFile:float x1; char ...

  2. Android 对话框弹出位置和透明度

    在Android中我们经常会用AlertDialog来显示对话框.通过这个对话框是显示在屏幕中心的.但在某些程序中,要求对话框可以显示在不同的位置.例如,屏幕的上方或下方.要实现这种效果.就需要获得对 ...

  3. Android 中的MVC与数据流动

    今天看了一个Android的Training生命周期转换的例子,顿觉得他的设计非常巧妙,我的分析如下: 1.在com.example.android.lifecycle包中有: 3个正常的全屏acti ...

  4. Linq打印

    Method syntax: Enumerable.Range(1, 100).ToList().ForEach(Console.WriteLine); Query syntax: (from n i ...

  5. [LeetCode#260]Single Number III

    Problem: Given an array of numbers nums, in which exactly two elements appear only once and all the ...

  6. bzoj1303

    首先找到b的位置x,要求满足b为中位数的数列把比b大的设为1,比b小设为-1则数列满足条件则x 左边的的和+x右边的和=0 然后应该就很好搞了 ..] of longint; i,n,m,x,k,an ...

  7. 大型系统OA--技术

    OA办公自动化系统--技术 1.由于涉及企业的流程控制与规则管理.所以系统对于规范要求的严谨性,导致在小型开发组在进行开发时必须基于成熟的技术架构.开源的lemon OA,采用了如下技术细节: mys ...

  8. 2015第44周五Java集群技术(转)

    从http://blog.csdn.net/cdh1213/article/details/21443239上看到这篇文章,感觉很不错,找好久没找到中文出处,最早看是从http://www.these ...

  9. java生成随机整数

    1. 使用Random类的nextInt方法: Random rand = new Random(); rand.nextInt(max);, 此时输出[0,max),注意右边是开区间,如果需要设定最 ...

  10. .\Obj\main.axf: Error: L6406E: No space in execution regions with .ANY selector matching sin_i.o(.co

    这个问题原因是 芯片的 空间不足 解决方法是  在KEIL 的DEVICE中选择 更大的空间的芯片型号