C# Dictionary用法总结

简介:

work hard work smart 原文 C# Dictionary用法总结

1、常规用法

增加键值对之前需要判断是否存在该键,如果已经存在该键而且不判断,将抛出异常。所以这样每次都要进行判断,很麻烦,在备注里使用了一个扩展方法

复制代码
public static void DicSample1()
{
 
    Dictionary<String, String> pList = new Dictionary<String, String>();
    try
    {
        if (pList.ContainsKey("Item1") == false)
        {
            pList.Add("Item1", "ZheJiang");
        }
        if (pList.ContainsKey("Item2")== false)
        {
            pList.Add("Item2", "ShangHai");
        }
        else
        {
            pList["Item2"] = "ShangHai";
        }
        if (pList.ContainsKey("Item3") == false)
        {
            pList.Add("Item3", "BeiJiang");
        }
         
    }
    catch (System.Exception e)
    {
        Console.WriteLine("Error: {0}", e.Message);
    }
   
 
    //判断是否存在相应的key并显示
    if (pList.ContainsKey("Item1"))
    {
        Console.WriteLine("Output: " + pList["Item1"]);
    }
 
    //遍历Key
    foreach (var key in pList.Keys)
    {
        Console.WriteLine("Output Key: {0}", key);
    }
 
    //遍历Value
    foreach (String value in pList.Values)
    {
        Console.WriteLine("Output Value: {0}", value);
    }
    //遍历Key和Value
    foreach (var dic in pList)
    {
        Console.WriteLine("Output Key : {0}, Value : {1} ", dic.Key, dic.Value);
    }
}
复制代码

 

2、Dictionary的Value为一个数组

复制代码
/// <summary>
/// Dictionary的Value为一个数组
/// </summary>
 public static void DicSample2()
 {
     Dictionary<String, String[]> dic = new Dictionary<String, String[]>();
     String[] ZheJiang =  { "Huzhou", "HangZhou", "TaiZhou" };
     String[] ShangHai = { "Budong", "Buxi" };
     dic.Add("ZJ", ZheJiang);
     dic.Add("SH", ShangHai);
     Console.WriteLine("Output :" + dic["ZJ"][0]);
 }
复制代码

3、Dictionary的Value为一个类

复制代码
//Dictionary的Value为一个类
public static void DicSample3()
 {
     Dictionary<String, Student> stuList = new Dictionary<String, Student>();
     Student stu = null;
     for (int i = 0; i < 3; i++ )
     {
         stu = new Student();
         stu.Name = i.ToString();
         stu.Name = "StuName" + i.ToString();
         stuList.Add(i.ToString(), stu);
     }
 
     foreach (var student in stuList)
     {
         Console.WriteLine("Output : Key {0}, Num : {1}, Name {2}", student.Key, student.Value.Name, student.Value.Name);
     }
 }
复制代码

 

Student类:

public class Student
{
    public String Num { get; set; }
    public String Name { get; set; }
}

 

 4  扩展方法

复制代码
/// <summary>
/// Dictionary的扩展方法使用
/// </summary>
 public static void DicSample4()
 {
     //1)普通调用
     Dictionary<int, String> dict = new Dictionary<int, String>();
     DictionaryExtensionMethodClass.TryAdd(dict, 1, "ZhangSan");
     DictionaryExtensionMethodClass.TryAdd(dict, 2, "WangWu");
     DictionaryExtensionMethodClass.AddOrPeplace(dict, 3, "WangWu");
     DictionaryExtensionMethodClass.AddOrPeplace(dict, 3, "ZhangWu");
     DictionaryExtensionMethodClass.TryAdd(dict, 2, "LiSi");
 
     //2)TryAdd 和 AddOrReplace 这两个方法具有较强自我描述能力,用起来很省心,而且也简单:
     dict.AddOrPeplace(20, "Orange");
     dict.TryAdd(21, "Banana");
     dict.TryAdd(22, "apple");
 
     //3)像Linq或jQuery一样连起来写  
     dict.TryAdd(10, "Bob")
         .TryAdd(11, "Tom")
         .AddOrPeplace(12, "Jom");
 
     //4) 获取值
     String F = "Ba";
     dict.TryGetValue(31, out F);
     Console.WriteLine("F : {0}",F);
 
     foreach (var dic in dict)
     {
         Console.WriteLine("Output : Key : {0}, Value : {1}", dic.Key, dic.Value);
     }
     //5)下面是使用GetValue获取值
     var v1 = dict.GetValue(111,null);
     var v2 = dict.GetValue(10,"abc");
 
     //6)批量添加
     var dict1 = new Dictionary<int,int>();
     dict1.AddOrPeplace(3, 3);
     dict1.AddOrPeplace(5, 5);
 
     var dict2 = new Dictionary<int, int>();
     dict2.AddOrPeplace(1, 1);
     dict2.AddOrPeplace(4, 4);
     dict2.AddRange(dict1, false);
 }
复制代码

 

扩展方法所在的类

  View Code

 

 

 

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。




    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5950628.html ,如需转载请自行联系原作者

相关文章
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
250 1
|
安全 C#
C# List基本用法
C# List基本用法
|
开发框架 .NET 编译器
C# 9.0中的静态匿名函数:引入static关键字的新用法
【1月更文挑战第15天】C# 9.0为匿名函数带来了一个新的修饰符static,允许开发者明确指定匿名函数不会捕获其包含作用域中的任何变量。这一特性增强了代码的性能和可读性,同时减少了因不小心捕获变量而导致的潜在错误。本文将详细探讨C# 9.0中静态匿名函数的语法、使用场景以及它们如何影响代码的性能和安全性。
C#学习相关系列之多线程---ConfigureAwait的用法
C#学习相关系列之多线程---ConfigureAwait的用法
396 0
C#学习相关系列之多线程---TaskCompletionSource用法(八)
C#学习相关系列之多线程---TaskCompletionSource用法(八)
634 0
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
688 0
|
7月前
|
存储 API C#
C#之 Dictionary 详解
C#之 Dictionary 详解
116 3
|
8月前
|
C#
C# Hashtable的用法
哈希表(HashTable)是一种通过键值对直接访问的数据结构。Add 方法用于添加成员,先检查成员是否已存在,若不存在则计算其 ASCII 码值作为散列值并添加到表中。Remove 方法用于移除成员,Size 方法返回集合成员数量。代码实现了这些功能,确保集合操作的高效性。
|
开发框架 .NET C#
C#学习相关系列之Linq用法---where和select用法(二)
C#学习相关系列之Linq用法---where和select用法(二)
913 2