简介
与数组,ArrayList不同,Dictionary的每个元素,都是由key和value组成。如一个人,他的名字叫张三,年龄是34岁,那么,可以用一个Dictionary来表示张三这个对象,此时字典里就有两个元素,元素1的key值是姓名,value值是张三,元素2的key值是年龄,value值是34。
所以,表达对象只有一个属性,可以用数组或ArrayList。一旦需要多个属性来表达,那么就可以用Dictionary。
构造函数
Dictionary<TKey,TValue> dictionary
使用确定数据类型的key与value创建dictionary实例。
static void Main(string[] args)
{
Dictionary<string, string> dict = new Dictionary<string, string>() ;
}
常用属性
Count
获取字典包含的元素数量。
static void Main(string[] args)
{
Dictionary<string, string> dict = new Dictionary<string, string>() ;
dict.Add("姓名", "张三");
dict.Add("年龄", "34");
Console.WriteLine("字典包含元素数量为:"+dict.Count);
Console.ReadKey();
}
运行结果:
字典包含元素数量为:2
Item[TKey]
通过key值来访问对应的value值。
static void Main(string[] args)
{
Dictionary<string, string> dict = new Dictionary<string, string>() ;
dict.Add("姓名", "张三");
dict.Add("年龄", "34");
Console.WriteLine("姓名为:" + dict["姓名"]);
Console.ReadKey();
}
运行结果:
姓名为:张三
Dictionary<TKey,TValue>.KeyCollection Keys
返回dictionary实例的键的集合。
{
Dictionary<string, string> dict = new Dictionary<string, string>() ;
dict.Add("姓名", "张三");
dict.Add("年龄", "34");
Dictionary<string, string>.KeyCollection keys=dict.Keys;
foreach (string key in keys)
{
Console.WriteLine(key);
}
Console.ReadKey();
}
运行结果:
姓名
年龄
Dictionary<TKey,TValue>.ValueCollection Values
返回dictionary实例的值的集合。
static void Main(string[] args)
{
Dictionary<string, string> dict = new Dictionary<string, string>() ;
dict.Add("姓名", "张三");
dict.Add("年龄", "34");
Dictionary<string, string>.ValueCollection values=dict.Values;
foreach (string value in values)
{
Console.WriteLine(value);
}
Console.ReadKey();
}
运行结果:
张三
34
常用方法
Add (TKey key, TValue value)
把key和value组成一个新的键值对,然后添加到dictionary实例中。
Clear()
清除dictionary实例中的所有元素。
static void Main(string[] args)
{
Dictionary<string, string> dict = new Dictionary<string, string>() ;
dict.Add("姓名", "张三");
dict.Add("年龄", "34");
dict.Clear();
Console.WriteLine("dict中元素数量有:"+dict.Count);
Console.ReadKey();
}
运行结果:
dict中元素数量有:0
ContainsKey (TKey key)
判断dictionary实例是否含有key键,如果有,返回true;否则,返回false。
static void Main(string[] args)
{
Dictionary<string, string> dict = new Dictionary<string, string>() ;
dict.Add("姓名", "张三");
dict.Add("年龄", "34");
Console.WriteLine("dict是否包含姓名键?:"+dict.ContainsKey("姓名"));
Console.WriteLine("dict是否包含身高键?:" + dict.ContainsKey("身高"));
Console.ReadKey();
}
运行结果:
dict是否包含姓名键?:True
dict是否包含身高键?:False
ContainsValue (TValue value)
判断dictionary是否含有value值,如果有,返回true;否则,返回false。
static void Main(string[] args)
{
Dictionary<string, string> dict = new Dictionary<string, string>() ;
dict.Add("姓名", "张三");
dict.Add("年龄", "34");
Console.WriteLine("dict值中是否包含张三?:"+dict.ContainsValue("张三"));
Console.WriteLine("dict值中是否包含170?:" + dict.ContainsValue("170"));
Console.ReadKey();
}
运行结果:
dict值中是否包含张三?:True
dict值中是否包含170?:False
GetEnumerator ()
返回一个Dictionary<TKey,TValue>.Enumerator对象,表示循环访问 dictionary实例的枚举数。
static void Main(string[] args)
{
Dictionary<string, string> dict = new Dictionary<string, string>() ;
dict.Add("姓名", "张三");
dict.Add("年龄", "34");
Dictionary<string,string>.Enumerator enumerator = dict.GetEnumerator(); //返回循环访问 Dictionary<TKey,TValue> 的枚举数。
KeyValuePair<string,string> pair=enumerator.Current; //访问当前的枚举对象
Console.WriteLine("没执行MoveNext(),枚举对象为:"+pair); //由于没有执行MoveNext(),所以访问的枚举对象为空
enumerator.MoveNext(); //访问下一个枚举对象
pair = enumerator.Current;
Console.WriteLine("执行MoveNext()后,枚举对象为:"+pair);
Console.ReadKey();
}
运行结果:
没执行MoveNext(),枚举对象为:[, ]
执行MoveNext()后,枚举对象为:[姓名, 张三]
Remove (TKey key)
删除dictionary实例中键=key的键值对。
static void Main(string[] args)
{
Dictionary<string, string> dict = new Dictionary<string, string>() ;
dict.Add("姓名", "张三");
dict.Add("年龄", "34");
dict.Remove("年龄");
foreach (string key in dict.Keys)
{
Console.WriteLine(key);
}
Console.ReadKey();
}
运行结果:
姓名