Hashtable.CopyTo メソッド
1 次元の Array インスタンスの指定したインデックスに Hashtable の要素をコピーします。
Public Overridable Sub CopyTo( _
ByVal array As Array, _ ByVal arrayIndex As Integer _) Implements ICollection.CopyTo
[C#]
public virtual void CopyTo(Arrayarray,intarrayIndex);
[C++]
public: virtual void CopyTo(Array* array,intarrayIndex);
[JScript]
public function CopyTo(
array : Array,arrayIndex : int);
パラメータ
- array
Hashtable から DictionaryEntry オブジェクトがコピーされる 1 次元の Array 。 Array には、0 から始まるインデックス番号が必要です。 - arrayIndex
コピーの開始位置となる、array の 0 から始まるインデックス番号。
実装
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | array が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | arrayIndex が 0 未満です。 |
ArgumentException | array が多次元です。
または arrayIndex が array の長さ以上です。 または コピー元の Hashtable の要素数が、 arrayIndex からコピー先の array の末尾までに格納できる数を超えています。 |
InvalidCastException | コピー元の Hashtable の型が、コピー先の array の型に自動的にキャストできません。 |
解説
要素は、列挙子が Hashtable を反復処理するのと同じ順序で、 Array にコピーされます。
Hashtable 内のキーだけをコピーするには、 Hashtable.Keys.CopyTo
を使用します。
Hashtable 内の値だけをコピーするには、 Hashtable.Values.CopyTo
を使用します。
使用例
1 次元の Array に Hashtable 内のキーまたは値のリストをコピーする方法の例を次に示します。
Imports System
Imports System.Collections
Public Class SamplesHashtable
Public Shared Sub Main()
' Creates and initializes the source Hashtable.
Dim mySourceHT As New Hashtable()
mySourceHT.Add("A", "valueA")
mySourceHT.Add("B", "valueB")
' Creates and initializes the one-dimensional target Array.
Dim myTargetArray As Array = Array.CreateInstance(GetType(String), 15)
myTargetArray.SetValue("The", 0)
myTargetArray.SetValue("quick", 1)
myTargetArray.SetValue("brown", 2)
myTargetArray.SetValue("fox", 3)
myTargetArray.SetValue("jumped", 4)
myTargetArray.SetValue("over", 5)
myTargetArray.SetValue("the", 6)
myTargetArray.SetValue("lazy", 7)
myTargetArray.SetValue("dog", 8)
' Displays the values of the target Array.
Console.WriteLine("The target Array contains the " _
& "following before:")
PrintValues(myTargetArray, " "c)
' Copies the keys in the source Hashtable to the target Hashtable,
' starting at index 6.
Console.WriteLine("After copying the keys, starting at index 6:")
mySourceHT.Keys.CopyTo(myTargetArray, 6)
' Displays the values of the target Array.
PrintValues(myTargetArray, " "c)
' Copies the values in the source Hashtable to the target Hashtable,
' starting at index 6.
Console.WriteLine("After copying the values, starting at index 6:")
mySourceHT.Values.CopyTo(myTargetArray, 6)
' Displays the values of the target Array.
PrintValues(myTargetArray, " "c)
End Sub
Public Shared Sub PrintValues(myArr As Array, mySeparator As Char)
Dim myEnumerator As System.Collections.IEnumerator = _
myArr.GetEnumerator()
Dim i As Integer = 0
Dim cols As Integer = myArr.GetLength(myArr.Rank - 1)
While myEnumerator.MoveNext()
If i < cols Then
i += 1
Else
Console.WriteLine()
i = 1
End If
Console.Write("{0}{1}", mySeparator, myEnumerator.Current)
End While
Console.WriteLine()
End Sub
End Class
' This code produces the following output.
'
' The target Array contains the following before:
' The quick brown fox jumped over the lazy dog
' After copying the keys, starting at index 6:
' The quick brown fox jumped over A B dog
' After copying the values, starting at index 6:
' The quick brown fox jumped over valueA valueB dog
[C#]
using System;
using System.Collections;
public class SamplesHashtable {
public static void Main() {
// Creates and initializes the source Hashtable.
Hashtable mySourceHT = new Hashtable();
mySourceHT.Add( "A", "valueA" );
mySourceHT.Add( "B", "valueB" );
// Creates and initializes the one-dimensional target Array.
Array myTargetArray=Array.CreateInstance( typeof(String), 15 );
myTargetArray.SetValue( "The", 0 );
myTargetArray.SetValue( "quick", 1 );
myTargetArray.SetValue( "brown", 2 );
myTargetArray.SetValue( "fox", 3 );
myTargetArray.SetValue( "jumped", 4 );
myTargetArray.SetValue( "over", 5 );
myTargetArray.SetValue( "the", 6 );
myTargetArray.SetValue( "lazy", 7 );
myTargetArray.SetValue( "dog", 8 );
// Displays the values of the target Array.
Console.WriteLine( "The target Array contains the following before:" );
PrintValues( myTargetArray, ' ' );
// Copies the keys in the source Hashtable to the target Hashtable, starting at index 6.
Console.WriteLine( "After copying the keys, starting at index 6:" );
mySourceHT.Keys.CopyTo( myTargetArray, 6 );
// Displays the values of the target Array.
PrintValues( myTargetArray, ' ' );
// Copies the values in the source Hashtable to the target Hashtable, starting at index 6.
Console.WriteLine( "After copying the values, starting at index 6:" );
mySourceHT.Values.CopyTo( myTargetArray, 6 );
// Displays the values of the target Array.
PrintValues( myTargetArray, ' ' );
}
public static void PrintValues( Array myArr, char mySeparator ) {
System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
int i = 0;
int cols = myArr.GetLength( myArr.Rank - 1 );
while ( myEnumerator.MoveNext() ) {
if ( i < cols ) {
i++;
} else {
Console.WriteLine();
i = 1;
}
Console.Write( "{0}{1}", mySeparator, myEnumerator.Current );
}
Console.WriteLine();
}
}
/*
This code produces the following output.
The target Array contains the following before:
The quick brown fox jumped over the lazy dog
After copying the keys, starting at index 6:
The quick brown fox jumped over A B dog
After copying the values, starting at index 6:
The quick brown fox jumped over valueA valueB dog
*/
[C++]
#using <mscorlib.dll>
#using <system.dll>
using namespace System;
using namespace System::Collections;
void PrintValues( Array* myArr, char mySeparator ) {
System::Collections::IEnumerator* myEnumerator = myArr->GetEnumerator();
int i = 0;
int cols = myArr->GetLength( myArr->Rank - 1 );
while ( myEnumerator->MoveNext() ) {
if ( i < cols ) {
i++;
} else {
Console::WriteLine();
i = 1;
}
Console::Write( "{0}{1}", __box(mySeparator), myEnumerator->Current );
}
Console::WriteLine();
}
int main() {
// Creates and initializes the source Hashtable.
Hashtable* mySourceHT = new Hashtable();
mySourceHT->Add( S"A", S"valueA" );
mySourceHT->Add( S"B", S"valueB" );
// Creates and initializes the one-dimensional target Array.
Array* myTargetArray=Array::CreateInstance( __typeof(String), 15 );
myTargetArray->SetValue( S"The", 0 );
myTargetArray->SetValue( S"quick", 1 );
myTargetArray->SetValue( S"brown", 2 );
myTargetArray->SetValue( S"fox", 3 );
myTargetArray->SetValue( S"jumped", 4 );
myTargetArray->SetValue( S"over", 5 );
myTargetArray->SetValue( S"the", 6 );
myTargetArray->SetValue( S"lazy", 7 );
myTargetArray->SetValue( S"dog", 8 );
// Displays the values of the target Array.
Console::WriteLine( S"The target Array contains the following before:" );
PrintValues( myTargetArray, ' ' );
// Copies the keys in the source Hashtable to the target Hashtable, starting at index 6.
Console::WriteLine( S"After copying the keys, starting at index 6:" );
mySourceHT->Keys->CopyTo( myTargetArray, 6 );
// Displays the values of the target Array.
PrintValues( myTargetArray, ' ' );
// Copies the values in the source Hashtable to the target Hashtable, starting at index 6.
Console::WriteLine( S"After copying the values, starting at index 6:" );
mySourceHT->Values->CopyTo( myTargetArray, 6 );
// Displays the values of the target Array.
PrintValues( myTargetArray, ' ' );
}
/*
This code produces the following output.
The target Array contains the following before:
The quick brown fox jumped over the lazy dog
After copying the keys, starting at index 6:
The quick brown fox jumped over A B dog
After copying the values, starting at index 6:
The quick brown fox jumped over valueA valueB dog
*/
[JScript]
import System
import System.Collections
// Creates and initializes the source Hashtable.
var mySourceHT : Hashtable = new Hashtable()
mySourceHT.Add("A", "valueA")
mySourceHT.Add("B", "valueB")
// Creates and initializes the one-dimensional target Array.
var myTargetArray : System.Array = System.Array.CreateInstance(System.String, 15)
myTargetArray.SetValue("The", 0)
myTargetArray.SetValue("quick", 1)
myTargetArray.SetValue("brown", 2)
myTargetArray.SetValue("fox", 3)
myTargetArray.SetValue("jumped", 4)
myTargetArray.SetValue("over", 5)
myTargetArray.SetValue("the", 6)
myTargetArray.SetValue("lazy", 7)
myTargetArray.SetValue("dog", 8)
// Displays the values of the target Array.
Console.WriteLine("The target Array contains the following before:")
PrintValues(myTargetArray, " ")
// Copies the keys in the source Hashtable to the target Hashtable,
// starting at index 6.
Console.WriteLine("After copying the keys, starting at index 6:")
mySourceHT.Keys.CopyTo(myTargetArray, 6)
// Displays the values of the target Array.
PrintValues(myTargetArray, " ")
// Copies the values in the source Hashtable to the target Hashtable,
// starting at index 6.
Console.WriteLine("After copying the values, starting at index 6:")
mySourceHT.Values.CopyTo(myTargetArray, 6)
// Displays the values of the target Array.
PrintValues(myTargetArray, " ")
function PrintValues(myArr : System.Array, mySeparator : Char){
var myEnumerator : System.Collections.IEnumerator = myArr.GetEnumerator()
var i : int = 0
var cols : int = myArr.GetLength(myArr.Rank - 1)
while(myEnumerator.MoveNext()){
if(i < cols)
i++
else{
Console.WriteLine()
i = 1
}
Console.Write("{0}{1}", mySeparator, myEnumerator.Current)
}
Console.WriteLine()
}
// This code produces the following output.
//
// The target Array contains the following before:
// The quick brown fox jumped over the lazy dog
// After copying the keys, starting at index 6:
// The quick brown fox jumped over A B dog
// After copying the values, starting at index 6:
// The quick brown fox jumped over valueA valueB dog
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
Hashtable クラス | Hashtable メンバ | System.Collections 名前空間 | Array | DictionaryEntry | GetEnumerator