C#中如何将哈希表转换为字符串
C#中的hashtable集合是一个非通用的元素集合。hashtable的每个元素都被表示为一个键值对。hashtable的键是非空的和唯一的。值可以是重复的和/或空的。
C#系统的Hashtable类。集合接口是Hashtable集合的表示。这个类提供了各种构造函数、方法和属性来操作hashtable集合。
我们还可以将hashtables转换成其他集合,如数组、ArrayList等,也可以转换成字符串表示。
在这篇文章中,让我们讨论一下如何将一个hashtable集合转换成一个字符串。
如何将hashtable项目转换为字符串
请注意,要将hashtable项目转换为字符串,hashtable类并没有像Java那样提供一个直接的方法。也没有内置的属性来做这种转换。因此,我们需要设计自己的方法来将hashtable元素转换为字符串表示。
为此,我们将不得不遍历hashtable集合,然后将每个项目的键和值复制到字符串中。我们可以放一个分隔符来分隔字符串中的每个键值项目。
为了实际使用C#编程,我们使用一个IDictionaryEnumerator,它将遍历hashtable中的每个项目。枚举器持有hashtable的每个项目(Key & value)。然后我们可以使用一个循环将每个键和值复制到字符串中,如下所示。
IDictionaryEnumerator enumerator = phonetics.GetEnumerator();
while (enumerator.MoveNext()) {
text += enumerator.Key + ", ";
text += enumerator.Value + "
";
}
正如我们在上面的代码中所看到的,在每个键值对被复制到字符串之后,我们插入了一个分界符’
‘这样,每一项都被分开。
示例
在C#中,将hashtable项目转换为字符串的完整程序如下所示。
using System;
using System.Collections;
class myHashTable {
public static void Main() {
// Create a Hashtable named phonetics
Hashtable phonetics = new Hashtable();
// Add key/value pairs in phonetics
phonetics.Add("A", "Apple");
phonetics.Add("B", "Banana");
phonetics.Add("C", "Cat");
phonetics.Add("D", "Dog");
phonetics.Add("E", "Elephant");
phonetics.Add("F", "Fish");
//print hahshtable collection
Console.WriteLine("Hashtable items:");
foreach(DictionaryEntry entry in phonetics){
Console.WriteLine("{0} and {1} ", entry.Key, entry.Value);
}
string text = "";
IDictionaryEnumerator enumerator = phonetics.GetEnumerator();
while (enumerator.MoveNext()) {
text += enumerator.Key + ", ";
text += enumerator.Value + "
";
}
Console.WriteLine("String value: {0}", text);
}
}
在这个程序中,我们有一个从A到F的语音的哈希表。然后我们声明一个IDictioanaryEnumerator来遍历这个hashtable。然后使用这个枚举器,我们用一个’while’循环将hashtable集合的内容复制到字符串中。
输出
该程序产生的输出结果如下。
Hashtable items:
B and Banana
C and Cat A and Apple
F and Fish
D and Dog
E and Elephant
String value: B, Banana
C, Cat
A, Apple
F, FishD, Dog
E, Elephant
在这里,我们首先显示了hashtable集合的内容。接下来,我们显示了字符串。我们可以看到,字符串的值由hashtable的所有元素组成,用”分隔。
‘(换行)。
示例
让我们来实现另一个程序,将hashtable转换为一个字符串。下面给出了完整的C#程序。
using System;
using System.Collections;
class myHashTable {
public static void Main() {
// Create a Hashtable named numberNames
Hashtable numberNames = new Hashtable();
// Add key/value pairs in numberNames
numberNames.Add("10", "Ten");
numberNames.Add("20", "Twenty");
numberNames.Add("30", "Thirty");
numberNames.Add("40", "Forty");
numberNames.Add("50", "Fifty");
numberNames.Add("60", "Sixty");
//print hahshtable collection
Console.WriteLine("Hashtable items:");
foreach(DictionaryEntry entry in numberNames){
Console.WriteLine("{0} => {1} ", entry.Key, entry.Value);
}
string text = "";
IDictionaryEnumerator enumerator = numberNames.GetEnumerator();
while (enumerator.MoveNext()) {
text += enumerator.Key + " and ";
text += enumerator.Value + "
";
}
Console.WriteLine("String value: {0}", text);
}
}
这个程序与前一个程序相似,只是在hashtable和字符串值的显示方式上有一些小的变化。
在这里,我们有一个数字名称哈希表,其键为数字,值为其相应的数字名称。然后我们声明一个IDictionaryEnumerator,用它来遍历hashtable,并将hashtable的每个项目(key & value)复制到一个字符串中。每个hashtable项目都由一个分隔符”分隔。
‘.
输出
该程序产生的输出结果如下。
Hashtable items:
10 => Ten
60 => Sixty
40 => Forty
50 => Fifty
20 => Twenty
30 => Thirty
String value: 10 and Ten
60 and Sixty
40 and Forty
50 and Fifty
20 and Twenty
30 and Thirty
从上面的输出中我们可以看到,hashtable集合项被成功地复制到了字符串变量中。
所以在这篇文章中,我们已经讨论了将hashtable集合转换为字符串。虽然没有直接的方法来做这种转换,但我们可以通过使用IDictionaryEnumerator来轻松地将hashtable集合转换为字符串。它持有hashtable的项目(包括key和value),我们可以很容易地访问这些项目,并通过一个循环将其复制到字符串中。