HashTable的相关操作(HashTalbe浅谈)

来源:互联网 发布:淘宝店铺搜索不到店铺 编辑:程序博客网 时间:2024/05/29 11:31

中国有句古话“书上得来终觉浅 绝知此事要躬行”。很喜欢这句话。其实我们在很多时候,只是知道一种结构的大概含义。在一些文章中也看到过一些简单的应用。但是,却从来没有去亲自用过。

       即使是暂时没有在开发实战中用过,至少也要写个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中添加和删除键/值时,应该先判断该键或者值是否存在,然后进行操作,以避免不必要的麻烦。

 

    希望本文能为您带来一点帮助,如有帮助,请顶我,我会做的更好!如果您有更好的文章,请推荐!不胜感激!

 

原创粉丝点击