C# Dictionary的用法 KeyValuePair<TKey, TValue> 结构

来源:互联网 发布:java 类对象降序 编辑:程序博客网 时间:2024/05/21 17:28

泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱。 

简介
在C#中,Dictionary提供快速的基于兼职的元素查找。当你有很多元素的时候可以使用它。它包含在System.Collections.Generic名空间中。

在使用前,你必须声明它的键类型和值类型

详细说明
必须包含名空间System.Collection.Generic 
Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值) 
键必须是唯一的,而值不需要唯一的 
键和值都可以是任何类型(比如:string, int, 自定义类型,等等) 
通过一个键读取一个值的时间是接近O(1)

创建和初始化一个Dictionary对象

Dictionary<char,int> dic=new Dictionary<char,int>()

//计算字符串中每种字符出现的次数(面试题)。“Welcome to Chinaworld”,不区分大小写,打印“W2”“e 2”“o 3”……

列子

        static void Main(string[] args)
        {
            //实例化对象,声明它的键类型和值类型。结构:Dictionary<[key], [value]> 
            //他的特点是存入对象是需要与[key]值一一对应的存入该泛型 通过某一个一定的[key]去找到对应的值


             Dictionary<char,int> dic=new Dictionary<char,int>();
            string str = "Welcome to C h i naworld";
            //先去掉字符串中的空格,然后转换为小写
            str = str.Replace(" ","").ToLower();
            //把字符串转化为字符数组
            char[] arr = str.ToCharArray();
           
            //从字符数组中遍历每个字符,然后记录到Dictionary<char,int>中
            foreach(char c in arr)
            {//如果你尝试读取字典中一个不存在的键,那么你会得到一个KeyNotFoundException。

                   所有在读取一个键之前,你必须先使用ContainKey来核对键是否存在字典中。


                //判断Dictionary<char,int> 是否包含相应的key键(:就是字符例如'K')
                if (!dic.ContainsKey(c))
                {
                    //如果不存在就添加键并给他一个(value)值1
                    dic.Add(c, 1);
                }
                else
                { // 如果存在相应的key键(:例如已经有了“k”字符),就对它对应的(value)值+1
                    dic[c] = dic[c] + 1;
                }
            }
            //使用KeyValuePair记录枚举字典中的键/值,ke.Key, ke.Value获取键对应的值
            foreach(KeyValuePair<char,int> ke in dic)
            {
                Console.WriteLine("{0}出现{1}次\n",ke.Key,ke.Value);
            }
            //////

 KeyValuePair<TKey, TValue>

foreach (KeyValuePair<string, string> kvp in openWith){   outputBlock.Text += String.Format("Key = {0}, Value = {1}",       kvp.Key, kvp.Value) + "\n";}


原创粉丝点击