C#中如何将Hashtable转换为数组
C#中的hashtable集合是一个以键值对表示的非通用的项目集合。每个键都是一个唯一的、非空的元素。另一方面,值可以是重复的和/或空的。
C#中的Hashtable类代表hashtable集合。这个类提供了相关的方法来创建对象,改变集合中的项目,等等。
在C#中,hashtable集合可以表示为一个数组或ArrayList。在这篇文章中,让我们讨论如何将hashtable集合转换为数组。
如何将Hashtable转换为数组
为了将hashtable转换成一个数组,C# Hashtable类提供了一个名为 “CopyTo “的方法。CopyTo方法将hashtable项目复制到一个数组中’。
CopyTo方法的原型在下面给出。
语法
参数
- array – 来自hashtable的DictionaryEntry对象的目的地。这是一个一维数组,以零为基础进行索引。
-
arrayIndex – 一个整数(Int32)值,表示目标数组的零基索引。代表复制开始的位置。
实现
描述
Hashtable.CopyTo(Array, Int32)方法将Hashtable的元素复制到指定索引的一维数组实例中。
Namespace
系统.集合
异常
- ArgumentNullException – 当目标数组为空时,会抛出这个异常。
-
ArgumentOutOfRangeException – 如果指定的arrayIndex小于0,则抛出。
-
ArgumentException – 如果数组是多维的,则抛出该异常。或者要复制的hashtable元素大于目标数组的可用空间。
-
InvalidCastException – 这个异常在类型不匹配时被抛出,即hashtable类型不能自动投射到目标数组类型。从上面的原型中,我们知道CopyTo方法是将hashtable元素复制到指定arrayIndex的数组中。指定数组索引处的数组元素将被hashtable元素所覆盖。
现在让我们实现一个编程实例来演示CopyTo方法。
在这里,我们使用的是以下的哈希图。
Key | value |
---|---|
A | FirstValue |
B | SecondValue |
上述hashtable元素将被转换为一个数组。该数组定义如下。
Index | value |
---|---|
0 | She |
1 | sells |
2 | sea |
3 | shells |
4 | on |
5 | the |
6 | sea |
7 | shore |
示例
现在我们将使用CopyTo方法将hashtable元素从index = 6开始复制到数组中。这个转换的整个程序在下面给出。
在这个程序中,我们首先声明并定义了hashtable。然后我们声明并定义了数组。接下来,使用CopyTo方法将hashtable的元素从index = 6开始复制到数组中。 在这个程序中,首先,我们只复制hashtable元素的键,然后再复制值。输出显示了数组的所有状态,如初始数组,复制hashtable元素后的数组,等等。
输出
该程序的输出结果如下所示。
上面的输出显示了初始数组,然后显示了复制了hashtable键和hashtable值之后的数组。
让我们看看另一个例子来清楚地了解CopyTo方法。
示例
该程序与先前的程序相似。我们在这里改变了hashtable。另外,我们在CopyTo方法中使用了一个空数组。下面是完整的程序。
这里我们使用CopyTo方法将hashtable的所有元素复制到一个空数组中。因为数组是空的,所以这些元素是从数组的开始复制的。因此我们为CopyTo方法指定index=0。
输出
该程序的输出结果如下。
在输出中,我们首先显示hashtable,然后显示数组的内容。为了说明问题,改变了hashtable和数组中元素的表现形式。
在这篇文章中,我们演示了使用C#的Hashtable类的CopyTo方法来将hashtable项转换为数组。CopyTo方法接受数组和索引作为参数,所以我们可以在数组的任何部分复制hashtable元素,而不一定要从头开始。为了在数组的开头复制hashtable元素,我们指定索引为0。根据指定的数组索引,CopyTo方法覆盖数组元素,如果有的话,用hashtable元素覆盖。