我不要MSDN中的代码,只想知道一下,在你们的项目中 哈希表 的用途。
我个人感觉 哈希表 有点像读取 INI 文件,有一个键名,然后有一个对应的键值。
可使用语言述叙,不一定使用到代码。
            //使用 Hashtable 类中的 Add 方法向 Hashtable 集合中添加项。然后使用 foreach 语句循环访问该集合。
            System.Collections.Hashtable ht = new System.Collections.Hashtable();
            ht.Add("jenny", "3638952");
            ht.Add("John", "555-0150");
            ht.Add("Enju", "555-0199");
            ht.Add("Molly", "555-0151");
            ht.Add("James", "555-0142");
            ht.Add("Ahmed", "555-0128");
            ht.Add("Leah", "555-0100");
         
            Console.WriteLine("Name\t\tNumber");
            foreach (string  name in ht.Keys)
            {
                Console.WriteLine(name + "\t" + ht[name]);
            }

解决方案 »

  1.   

    我们项目的数据库操作类就用到了,用于查找数据类型的        private static Hashtable paramCache = Hashtable.Synchronized(new Hashtable());
            private static Hashtable paramDirections = Hashtable.Synchronized(new Hashtable());
            private static Hashtable paramTypes = Hashtable.Synchronized(new Hashtable());        static DataAccessParameterCache()
            {
                paramTypes.Add("bigint", SqlDbType.BigInt);
                paramTypes.Add("binary", SqlDbType.Binary);
                paramTypes.Add("bit", SqlDbType.Bit);
                paramTypes.Add("char", SqlDbType.Char);
                paramTypes.Add("datetime", SqlDbType.DateTime);
                paramTypes.Add("decimal", SqlDbType.Decimal);
                paramTypes.Add("float", SqlDbType.Float);
                paramTypes.Add("image", SqlDbType.Image);
                paramTypes.Add("int", SqlDbType.Int);
                paramTypes.Add("money", SqlDbType.Money);
                paramTypes.Add("nchar", SqlDbType.NChar);
                paramTypes.Add("ntext", SqlDbType.NText);
                paramTypes.Add("numeric", SqlDbType.Decimal);
                paramTypes.Add("nvarchar", SqlDbType.NVarChar);
                paramTypes.Add("real", SqlDbType.Real);
                paramTypes.Add("smalldatetime", SqlDbType.SmallDateTime);
                paramTypes.Add("smallint", SqlDbType.SmallInt);
                paramTypes.Add("smallmoney", SqlDbType.SmallMoney);
                paramTypes.Add("sql_variant", SqlDbType.Variant);
                paramTypes.Add("text", SqlDbType.Text);
                paramTypes.Add("timestamp", SqlDbType.Timestamp);
                paramTypes.Add("tinyint", SqlDbType.TinyInt);
                paramTypes.Add("uniqueidentifier", SqlDbType.UniqueIdentifier);
                paramTypes.Add("varbinary", SqlDbType.VarBinary);
                paramTypes.Add("varchar", SqlDbType.VarChar);
                paramDirections.Add((short) 1, ParameterDirection.Input);
                paramDirections.Add((short) 2, ParameterDirection.InputOutput);
                paramDirections.Add((short) 4, ParameterDirection.ReturnValue);
            }
      

  2.   

    和 Dictionary<Key,Value>有什么不同?
      

  3.   

    Hashtable是非泛型版本
    Dictionary <Key,Value>是泛型版本
      

  4.   


      private void buttonSaveNetConfig_Click(object sender, EventArgs e)
            {
                Hashtable hst = new Hashtable();
                hst.Add("ComServerIP", textBoxComServerIP.Text.Trim());
                hst.Add("ComServerPort", textBoxComServerPort.Text.Trim());
                Config.SetConfigValue(hst);
                lableTestComServerConnResult.Text = "保存成功!";
            }
    //SetConfigValue方法代码段:(其实我感觉用string数组也差不多。)
       //设置配置项并保存
                foreach (DictionaryEntry de in hst)
                {
                    XmlNode xNode;
                    XmlElement xElem1;
                    XmlElement xElem2;                xNode = xDoc.SelectSingleNode("//appSettings");                xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + de.Key.ToString() + "']");
                    if (xElem1 != null) xElem1.SetAttribute("value", de.Value.ToString());
                    else
                    {
                        xElem2 = xDoc.CreateElement("add");
                        xElem2.SetAttribute("key", de.Key.ToString());
                        xElem2.SetAttribute("value", de.Value.ToString());
                        xNode.AppendChild(xElem2);
                    }                xDoc.Save(path);
                }
                
      

  5.   

    UP这个,MSDN里有 搜索 Hashtable class
      

  6.   

    HashTable是System.Collections命名空间提供的一个容器,HashTable中的key/value均为object类型,
    HashTable可以支持任何类型的key/value键/值对。
    HashTable的优点就在于其索引的方式,速度非常快。
    合适的数组大小是哈希表的性能的关键。哈希表的尺寸最好是一个质数。
    哈希函数是一个映象,将关键字的集合映射到某个地址集合上,它的设置很灵活,只要这个地址集合的大小不超出允许范围即可。
      

  7.   

     Hashtable HS = new Hashtable();
     foreach (DictionaryEntry de in HS)
                {
                    Console.WriteLine(de.Value.ToString());
                    Console.WriteLine(de.Key.ToString());
                }
     foreach (System.Collections.DictionaryEntry objDE in objHasTab)
    {
        Console.WriteLine(objDE.Key.ToString());
        Console.WriteLine(objDE.Value.ToString());
    }System.Collections.IDictionaryEnumerator enumerator = objHashTable.GetEnumerator(); 
    while (enumerator.MoveNext())
    {
        Console.WriteLine(enumerator.Key);        
        Console.WriteLine(enumerator.Value);     }参考
      

  8.   

      现在都用泛型版喽!IDictionary <T,T> 和Dictionary <T,T>很好很强大!