泛型最常见的用途是泛型集合,命名空间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"; }