遍历HashTable HashTable 遍历与数组类似都可以使用 foreach 语句。由于 Hashtable 中的元素是键值对因此需要使用 DictionaryEntry 类型来进行遍历。DictionaryEntry 类型表示一个键值对的集合。下面是一个具体的代码示例Hashtable hashtable new Hashtable();hashtable.Add(钻石蓝, DiamondBlue.ssk);hashtable.Add(钻石绿, DiamondGreen.ssk);tscbxstyle.ComboBox.DropDownStyle ComboBoxStyle.DropDownList;tscbxstyle.ComboBox.Items.Clear();foreach (DictionaryEntry dicEntry in hashtable){tscbxstyle.ComboBox.Items.Add(dicEntry.Key);tscbxstyle.ComboBox.DisplayMember dicEntry.Key.ToString();tscbxstyle.ComboBox.ValueMember dicEntry.Value.ToString();}Hashtable 与 Dictionary 的差异在 .NET 中Hashtable和DictionaryTKey, TValue都是用于存储键值对的集合但它们在设计、性能和用法上有显著区别1. 类型安全Hashtable非泛型集合键和值都是object类型因此不是类型安全的。添加和读取时需要进行装箱和拆箱操作。DictionaryTKey, TValue泛型集合在声明时指定键和值的具体类型提供编译时类型检查避免了装箱拆箱开销。2. 性能Hashtable由于使用object类型频繁的装箱拆箱会影响性能尤其在大量数据操作时。DictionaryTKey, TValue泛型设计带来更好的性能避免了类型转换开销访问速度更快。3. 线程安全Hashtable通过Hashtable.Synchronized静态方法可以创建线程安全的包装器。DictionaryTKey, TValue默认不是线程安全的需要手动使用锁或其他同步机制。4. 空值处理Hashtable键和值都可以为null。DictionaryTKey, TValue键不能为null除非使用可空引用类型值可以为null。5. 迭代方式Hashtable使用DictionaryEntry结构进行遍历如本文示例所示。DictionaryTKey, TValue使用KeyValuePairTKey, TValue结构进行遍历。6. 推荐使用场景Hashtable主要用于遗留代码或需要与 .NET 1.x 兼容的场景。DictionaryTKey, TValue现代 .NET 开发中的首选提供更好的类型安全、性能和开发体验。7. 代码示例对比以下是使用 DictionaryTKey, TValue 实现相同功能的代码Dictionarystring, string dictionary new Dictionarystring, string(); dictionary.Add(钻石蓝, DiamondBlue.ssk); dictionary.Add(钻石绿, DiamondGreen.ssk); tscbxstyle.ComboBox.DropDownStyle ComboBoxStyle.DropDownList; tscbxstyle.ComboBox.Items.Clear(); foreach (KeyValuePairstring, string kvp in dictionary) { tscbxstyle.ComboBox.Items.Add(kvp.Key); tscbxstyle.ComboBox.DisplayMember kvp.Key; tscbxstyle.ComboBox.ValueMember kvp.Value; }