通过实例学C#之Dictionary类

时间:2024-04-20 07:29:37

简介

        与数组,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();
}

运行结果:
姓名