通常我们学习如何使用HashTable的时候我们经常会看到这样一段代码
using system;
using system.collections; //使用hashtable时,必须引入这个命名空间
class hashtable
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
public static void main()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
hashtable ht = new hashtable(); //创建一个hashtable实例
ht.add("e", "e");//添加key/value键值对
ht.add("a", "a");
ht.add("c", "c");
ht.add("b", "b");
string s = (string)ht["a"];
if (ht.contains("e")) //判断哈希表是否包含特定键,其返回值为true或false
console.writeline("the e key:exist");
ht.remove("c");//移除一个key/value键值对
console.writeline(ht["a"]);//此处输出a
ht.clear();//移除所有元素
console.writeline(ht["a"]); //此处将不会有任何输出
}
}
但是我们察看MSDN 可以看到 hashtable的Add方法的参数是object,所以无论是Key,还是Value 都可以使用自定义的类(class)或(struct) 实体,将object 装入 hashtable ,这样使用起来就更方便了。可以参考如下代码
using system;
using system.collections; //使用hashtable时,必须引入这个命名空间
class hashtable
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
public static void main()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Hashtable ht = new Hashtable();
ht.Add("1", new singer(1, "周杰", "male"));
ht.Add("2", new singer(2, "蔡依", "female"));
singer s =(singer)ht["1"];
Console.WriteLine(s.Name);
}
}
![](/Images/OutliningIndicators/None.gif)
public class singer
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
public singer(int ID, string Name, string Type) //构造函数
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
_id=ID;
_name=Name;
_type=Type;
}
![](/Images/OutliningIndicators/InBlock.gif)
private int _id;
private string _name;
private string _type;
![](/Images/OutliningIndicators/InBlock.gif)
public int ID
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _id; }
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ _id = value; }
}
public string Name
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _name; }
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ _name = value; }
}
public string Type
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return _type; }
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ _type = value; }
}
}
这个虽然简单,但对于一些初学者在学习C#中还是很有帮助的。