有个类,我要取哈希WMIClasses方法的值;如下:
foreach (DictionaryEntry de in ht) //ht为一个Hashtable实例
{
listBox1.Items.Add(de.Key);
listBox1.Items.Add(de.Value);
}
----------------------------------------------------
问题是:我只能取到最上层的key :“计算机系统硬件、软件操作系统”,这两个key的value 取不到,显示为:(collection)。 我想知道哈希表中 DataSet 作用? 如何取出来?
----------------------------------------------------
类程序如下:
private Hashtable _ClassHash=new Hashtable();
public WMIClasses()
{
LoadWMIClasses();
}
private void LoadWMIClasses()
{
_ClassHash.Clear();
_ClassHash["计算机系统硬件"]=new Hashtable();
Hashtable hash=(Hashtable)_ClassHash["计算机系统硬件"];
hash["降温设备"]=new DataSet("降温设备");
DataSet dataset=(DataSet)hash["降温设备"];
dataset.Tables.Add(new DataTable("Win32_Fan"));
dataset.Tables.Add(new DataTable("Win32_HeatPipe"));
hash["输入设备"]=new DataSet("输入设备");
dataset=(DataSet)hash["输入设备"];
dataset.Tables.Add(new DataTable("Win32_Keyboard"));
dataset.Tables.Add(new DataTable("Win32_PointingDevice")); _ClassHash["软件操作系统"]=new Hashtable();
hash=(Hashtable)_ClassHash["软件操作系统"];
hash["组件"]=new DataSet("组件");
dataset=(DataSet)hash["组件"];
dataset.Tables.Add(new DataTable("Win32_ClassicCOMApplicationClasses"));
dataset.Tables.Add(new DataTable("Win32_ClassicCOMClass"));
} public Hashtable ClassHash
{
get{return _ClassHash;}
}
foreach (DictionaryEntry de in ht) //ht为一个Hashtable实例
{
listBox1.Items.Add(de.Key);
listBox1.Items.Add(de.Value);
}
----------------------------------------------------
问题是:我只能取到最上层的key :“计算机系统硬件、软件操作系统”,这两个key的value 取不到,显示为:(collection)。 我想知道哈希表中 DataSet 作用? 如何取出来?
----------------------------------------------------
类程序如下:
private Hashtable _ClassHash=new Hashtable();
public WMIClasses()
{
LoadWMIClasses();
}
private void LoadWMIClasses()
{
_ClassHash.Clear();
_ClassHash["计算机系统硬件"]=new Hashtable();
Hashtable hash=(Hashtable)_ClassHash["计算机系统硬件"];
hash["降温设备"]=new DataSet("降温设备");
DataSet dataset=(DataSet)hash["降温设备"];
dataset.Tables.Add(new DataTable("Win32_Fan"));
dataset.Tables.Add(new DataTable("Win32_HeatPipe"));
hash["输入设备"]=new DataSet("输入设备");
dataset=(DataSet)hash["输入设备"];
dataset.Tables.Add(new DataTable("Win32_Keyboard"));
dataset.Tables.Add(new DataTable("Win32_PointingDevice")); _ClassHash["软件操作系统"]=new Hashtable();
hash=(Hashtable)_ClassHash["软件操作系统"];
hash["组件"]=new DataSet("组件");
dataset=(DataSet)hash["组件"];
dataset.Tables.Add(new DataTable("Win32_ClassicCOMApplicationClasses"));
dataset.Tables.Add(new DataTable("Win32_ClassicCOMClass"));
} public Hashtable ClassHash
{
get{return _ClassHash;}
}
key 和value 都是object类型
可以将dataset作为value 存在hashtable里。
比如
dataset ds =new dataset();
hashtable hs =new hashtable();
hs.add("key",ds);
如果要访问这个ds
则
dataset ds1 =hs["key"] as dataset;
多谢2楼,道理我听明白了; 能否提供代码参考;
hash["降温设备"]=new DataSet("降温设备");
拿上面这个DataSet来说,我的key是:降温设备 ?
------------------------
Hashtable ht = clswmi.ClassHash;
foreach (DictionaryEntry de in ht) //ht为一个Hashtable实例
{
DataSet ds2 = ht["降温设备"] as DataSet;
string strInfo = ds2.Tables[0].Rows[0][0].ToString();
listBox1.Items.Add(strInfo);
}
-------------------------
我的是winform; 我上面这样写,总还是抱错:未将对象引用设置到对象的实例。