zoukankan      html  css  js  c++  java
  • ConcurrentDictionary的ToDictionary

    如果Value是引用,那么在使用Value.Clear()的时候。会清空Value的所有元素,但是不会改变Value的引用

     private static void Main()
            {
                try
                {
                    var concurrentDictionary = new ConcurrentDictionary<string, List<int>>();
                    concurrentDictionary.TryAdd("chuck", new List<int>() {1, 2, 3});
                    concurrentDictionary.TryAdd("lihu", new List<int>() {4, 5, 6});
    
                    var dictionary = concurrentDictionary.ToDictionary(x => x.Key, x => x.Value);
                    foreach (var list in concurrentDictionary.Values)
                    {
                        list.Clear();
                    }
    
                    foreach (var name in dictionary.Keys)
                    {
                        Console.WriteLine(name);
                        var list = dictionary[name];
                        foreach (var number in list)
                        {
                            Console.Write("	{0}",number);
                        }
                        Console.WriteLine();
                    }
    
                }
                catch (Exception ex)
                {
                    while (ex != null)
                    {
                        Console.WriteLine(ex.Message);
                        ex = ex.InnerException;
                    }
                }
                Console.ReadLine();
            }

    还需要测试下Value是List<Student>的情况 

    internal class Student
        {
            internal int Id { get; set; }
            internal string Name { get; set; }
        }
    
        internal class Program
        {
            private static void Main()
            {
                try
                {
                    var concurrentDictionary = new ConcurrentDictionary<string, Student>();
                    concurrentDictionary.TryAdd("chuck", new Student() {Id = 1, Name = "chuck"});
                    concurrentDictionary.TryAdd("lihu", new Student() {Id = 2, Name = "lihu"});
    
                    var dictionary = concurrentDictionary.ToDictionary(x => x.Key, x => x.Value);
                    foreach (var key in concurrentDictionary.Keys)
                    {
                        concurrentDictionary[key].Id = 0;
                        concurrentDictionary[key].Name = "hello world";
                    }
    
                    foreach (var name in dictionary.Keys)
                    {
                        Console.Write(name);
                        Console.Write("	id={0}	name={1}", dictionary[name].Id, dictionary[name].Name);
                        Console.WriteLine();
                    }
    
                }
                catch (Exception ex)
                {
                    while (ex != null)
                    {
                        Console.WriteLine(ex.Message);
                        ex = ex.InnerException;
                    }
                }
                Console.ReadLine();
            }
        }

     Value是值类型的

     private static void Main()
            {
                try
                {
                    var concurrentDictionary = new ConcurrentDictionary<string, int>();
                    concurrentDictionary.TryAdd("chuck", 1);
                    concurrentDictionary.TryAdd("lihu",4);
    
                    var dictionary = concurrentDictionary.ToDictionary(x => x.Key, x => x.Value);
                    foreach (var key in concurrentDictionary.Keys)
                    {
                        concurrentDictionary[key] = 0;
                    }
    
                    foreach (var name in dictionary.Keys)
                    {
                        Console.Write(name);
                        Console.Write("	{0}", dictionary[name]);
                        Console.WriteLine();
                    }
    
                }
                catch (Exception ex)
                {
                    while (ex != null)
                    {
                        Console.WriteLine(ex.Message);
                        ex = ex.InnerException;
                    }
                }
                Console.ReadLine();
            }
  • 相关阅读:
    HDU 1358 Period (KMP)
    POJ 1042 Gone Fishing
    Csharp,Javascript 获取显示器的大小的几种方式
    css text 自动换行的实现方法 Internet Explorer,Firefox,Opera,Safar
    Dynamic Fonts动态设置字体大小存入Cookie
    CSS Image Rollovers翻转效果Image Sprites图片精灵
    CSS three column layout
    css 自定义字体 Internet Explorer,Firefox,Opera,Safari
    颜色选择器 Color Picker,Internet Explorer,Firefox,Opera,Safar
    CSS TextShadow in Safari, Opera, Firefox and more
  • 原文地址:https://www.cnblogs.com/chucklu/p/4943173.html
Copyright © 2011-2022 走看看