用Hashtable类对比学习 泛型类 Dictionary<>, 并学习Dictionary的一些属性与方法。加深对泛型概念的理解。
static void Main( string [ ] args )
{
//Hashtable stu_info = new Hashtable ();
//stu_info.Add ( "A001", "张三" ); //方法添加 add(obj,obj)
//stu_info.Add ( "A002", "李四" );
//stu_info.Add ( "A003", "小明" );
//stu_info["A004"]= "小红" ; // K-V 添加
//foreach (DictionaryEntry xuehao in stu_info) //遍历用 “DictionaryEntry ”
//Console.WriteLine ($"学号为{xuehao.Key},学生名字为:{xuehao.Value }" );
Dictionary<string, string> Dstu_info = new Dictionary<string, string> (); //声明泛型 与Hsahtable一样,只是多了<参数类型1,参数类型2>.
Dstu_info .Add ( "B005", "蜡笔小新" );
Dstu_info.Add ( "B006", "樱木花道" );
Dstu_info.Add ( "B007", "阿童木" );
Dstu_info.Add ( "B008", "德马西亚" );
Console.WriteLine ();
// foreach 遍历输出key-value对,使用key,value属性。这两个属性不是Dictionary的,而是结构 KeyValuePair的属性。
// Dictionary的属性是 Keys 与Values (有S,代表获得的是键和值的 集合)
foreach (KeyValuePair <string,string> xuehao2 in Dstu_info) //使用 KeyValuePair 结构体。
{
Console.WriteLine ( $"学号为:{ xuehao2.Key},学生名字为:{ xuehao2.Value}" );
}
// 输出元素数,使用 count属性
Console.WriteLine ();
Console.WriteLine ( $" 字典中键值对数量为{Dstu_info.Count}对" );
//只输出值 使用 values属性 :获得字典中值的集合。
Dictionary<string, string>.ValueCollection val = Dstu_info.Values;
foreach(string str1 in val)
{
Console.WriteLine ( $"字典中所有值为-- {str1}" );
}
Console.WriteLine ();
//只输出键,使用keys属性 :获得字典中键的集合。
Dictionary<string, string>.KeyCollection key1 = Dstu_info.Keys;
foreach (string str2 in key1)
{
Console.WriteLine ( $"字典中所有键为-- {str2}" );
}
// 通过key查找值,使用Item[Tkey]属性
//containsKey() 方法确定是否有这个值。Bool
if (Dstu_info.ContainsKey ( "B005" ))
{
Console.WriteLine ( "学号为B005的学生姓名为:{0}", Dstu_info [ "B005" ] );
}
else { Console.WriteLine ( "没有这个学号的学生" ); }
Console.WriteLine ();
//containValue(tValue)方法查找是不是有某确定值。Bool
if (Dstu_info.ContainsValue ( "蜡笔小新" ))
{
Console.WriteLine ( "有这名学生:蜡笔小新" );
}
else { Console.WriteLine ( "没有这个学生,请检查" ); }
Console.WriteLine ();
//tryGetvaleu(Key,out value) 获取与指定的键 关联的值。有返回值,无返回false. bool
//相当于containsKey 与 Item[Tkey]的结合
string strGet = " "; //定义空字符串用来存储数据
if (Dstu_info.TryGetValue("B006",out strGet))
{
Console.WriteLine ( $"学号为A008的学生为:{strGet}" );
}
else
{
Console.WriteLine ( "没有这个号" );
}
//删除某一个键与值 Remove()方法
//使用 KeyValuePair<Tkey,Tvalue> ,可以获得配对的 键&值
//使用KeyValuePair 的属性.Key / .Value,可以分别获得键&值;
Dstu_info.Remove ( "B007" );
foreach (KeyValuePair<string,string> xuehao3 in Dstu_info )
{
Console.WriteLine ( $"{xuehao3}" ); // 输出配对的键&值 ,形式为【键,值】
}
//第2种,用属性分别输出 键和值
Console.WriteLine ();
foreach (KeyValuePair<string, string> xuehao3 in Dstu_info)
{
Console.WriteLine ( $"学号:{xuehao3.Key} 姓名:{xuehao3.Value}" ); //key:键 value:值
}
Console.Read ();
}
}
}
//以上, 用来表示 键与值的集合--泛型类 Dictionary<TKey,TValue> 类,知识点总结如下:
/*
* 1) 属 性:Count Keys Values Item[Tkey]
*
* 2) 构造函数: Dictionary<TKey, TValue>()
*
* 3) 方 法:Add(TKey, TValue) , ContainsKey(TKey) ,ContainsValue(TValue) ,
TryGetValue(TKey, TValue), Remove(Tkey) , Clear()
* 4) 结 构 体:KeyValuePair<TKey, TValue>, 以及它的属性 Key, Value
*/