中国有句古话“书上得来终觉浅 绝知此事要躬行”。很喜欢这句话。其实我们在很多时候,只是知道一种结构的大概含义。在一些文章中也看到过一些简单的应用。但是,却从来没有去亲自用过。
即使是暂时没有在开发实战中用过,至少也要写个Dome来证明你用过。只有这样,在真正用的时候才能有切入点。
了解一种知识,不能光知道它的名称。至少要动动手去写。
HashTable表示键/值对的集合。键不能为 nullNothingnullptrnull,但值可以。
命名空间:using System.Collections;
程序集: mscorlib(在 mscorlib.dll 中)
现在开始贴代码。介绍对HashTable的简单实用。
以下示例取自MSDN中,必要地方给予说明。
// 创建一个Hashtable
Hashtable openWith = new Hashtable();
// 向Hashtable中添加键/值对
openWith.Add(1, true); //键可以为Int,值可以为bool
openWith.Add("txt", "notepad.exe");//键可以为string,值可以为string
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
我们看看HashTable的方法签名:
public virtual void Add(object key, object value);
可以看出HashTable增加项是很灵活的。因为键、值都为object类型。
注意:当向HashTable中添加重复的项时,会产生一个错误。(在添加键/值时,应该先检查该键是否存在)
// 获得HashTable的值-HashTable名[键],得到的是ojbect对象,需要强制类型转换
bool value = Convert.ToBoolean(openWith[1]);
string rtf= openWith["rtf"].ToString();
// 为HashTable对象赋值- HashTable名[键]=要赋予的值。
openWith["rtf"] = "winword.exe";
// 检验某个键是否存在
bool isExist =openWith.ContainsKey("ht")// 存在返回true,不存在false
// 遍历hashtable的键-值
foreach (DictionaryEntry de in openWith)
{
StringBuilder strSb=new StringBuilder();
strSb.AppendFormat("Key = {0}, Value = {1}", de.Key, de.Value);
}
// 获得hashtable的值集合
ICollection valueColl = openWith.Values;
foreach (string s in valueColl)
{
StringBuilder SB_values = new StringBuilder();
SB_values.AppendFormat("Value = {0}",s);
}
// 获得hashtable的键集合
ICollection keyColl = openWith.Keys;
foreach (string s in keyColl)
{
StringBuilder SB_keys = new StringBuilder();
SB_keys.AppendFormat("Key = {0}", s);
}
// 删除记录,根据键
openWith.Remove("doc");
注意:当向HashTable中添加和删除键/值时,应该先判断该键或者值是否存在,然后进行操作,以避免不必要的麻烦。
希望本文能为您带来一点帮助,如有帮助,请顶我,我会做的更好!如果您有更好的文章,请推荐!不胜感激!