この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Hashtable クラス

 

公開日: 2016年10月

キーのハッシュ コードに基づいて編成された、キーと値のペアのコレクションを表します。

この型の .NET Framework ソース コードを参照するを参照してください。、 Reference Sourceです。

名前空間:   System.Collections
アセンブリ:  mscorlib (mscorlib.dll 内)


[SerializableAttribute]
[ComVisibleAttribute(true)]
public class Hashtable : IDictionary, ICollection, IEnumerable, 
	ISerializable, IDeserializationCallback, ICloneable

名前説明
System_CAPS_pubmethodHashtable()

新しい空のインスタンスを初期化、 Hashtable クラスの既定の初期量を使用して、テーブル占有率、ハッシュ コード プロバイダー、および比較子。

System_CAPS_pubmethodHashtable(IDictionary)

新しいインスタンスを初期化、 Hashtable クラスの新規作成] を指定したディクショナリから要素をコピーして Hashtable オブジェクトです。 新しい Hashtable オブジェクトは、コピーされた要素の数に等しい初期量が存在し、既定のテーブル占有率、ハッシュ コード プロバイダー、および比較子を使用します。

System_CAPS_pubmethodHashtable(IDictionary, IEqualityComparer)

新しいインスタンスを初期化、 Hashtable クラスの新規作成] を指定したディクショナリから要素をコピーして Hashtable オブジェクトです。 新しい Hashtable オブジェクトが、コピーされた要素の数に等しい初期量に備え、既定のテーブル占有率と、指定した使用 IEqualityComparer オブジェクトです。

System_CAPS_pubmethodHashtable(IDictionary, IHashCodeProvider, IComparer)

互換性のために残されています。新しいインスタンスを初期化、 Hashtable クラスの新規作成] を指定したディクショナリから要素をコピーして Hashtable オブジェクトです。 新しい Hashtable オブジェクトが、コピーされた要素の数に等しい初期量に備え、既定のテーブル占有率、および指定したハッシュ コード プロバイダーと比較子を使用します。 この API は、互換性のために残されています。 代わりに、次を参照してください。 Hashtableします。

System_CAPS_pubmethodHashtable(IDictionary, Single)

新しいインスタンスを初期化、 Hashtable クラスの新規作成] を指定したディクショナリから要素をコピーして Hashtable オブジェクトです。 新しい Hashtable オブジェクトが、コピーされた要素の数に等しい初期量に備え、指定したテーブル占有率、および既定のハッシュ コード プロバイダーと比較子を使用します。

System_CAPS_pubmethodHashtable(IDictionary, Single, IEqualityComparer)

新しいインスタンスを初期化、 Hashtable クラスの新規作成] を指定したディクショナリから要素をコピーして Hashtable オブジェクトです。 新しい Hashtable オブジェクトが、コピーされた要素の数に等しい初期量に備え、指定したテーブル占有率を使用し、 IEqualityComparer オブジェクトです。

System_CAPS_pubmethodHashtable(IDictionary, Single, IHashCodeProvider, IComparer)

互換性のために残されています。新しいインスタンスを初期化、Hashtableクラスの新規作成 を指定されたディクショナリから要素をコピーしてHashtableオブジェクト。 新しいHashtableオブジェクトをコピーした要素の数と等しく、初期容量し、指定された占有率、ハッシュ コード プロバイダーおよび比較子を使用します。

System_CAPS_pubmethodHashtable(IEqualityComparer)

新しい空のインスタンスを初期化、 Hashtable クラスの既定の初期量を使用して、読み込みの占有率、および指定した IEqualityComparer オブジェクトです。

System_CAPS_pubmethodHashtable(IHashCodeProvider, IComparer)

互換性のために残されています。新しい空のインスタンスを初期化、 Hashtable クラスの既定の初期量を使用して、占有率、および指定したハッシュ コード プロバイダーとの比較子をロードします。

System_CAPS_pubmethodHashtable(Int32)

新しい空のインスタンスを初期化、 Hashtable クラスの指定した初期量と既定のテーブル占有率、ハッシュ コード プロバイダー、および比較子を使用します。

System_CAPS_pubmethodHashtable(Int32, IEqualityComparer)

新しい空のインスタンスを初期化します、 Hashtable クラスの指定した初期量を使用して、 IEqualityComparer, 、および既定のテーブル占有率。

System_CAPS_pubmethodHashtable(Int32, IHashCodeProvider, IComparer)

互換性のために残されています。新しい空のインスタンスを初期化、 Hashtable クラスの指定した初期量、ハッシュ コード プロバイダー、比較演算子、および既定のテーブル占有率を使用します。

System_CAPS_pubmethodHashtable(Int32, Single)

新しい空のインスタンスを初期化、 Hashtable クラスの指定した初期量を使用して、占有率、および既定のハッシュ コード プロバイダーとの比較子をロードします。

System_CAPS_pubmethodHashtable(Int32, Single, IEqualityComparer)

新しい空のインスタンスを初期化、 Hashtable クラスの指定した初期量、テーブル占有率を使用して、 IEqualityComparer オブジェクトです。

System_CAPS_pubmethodHashtable(Int32, Single, IHashCodeProvider, IComparer)

互換性のために残されています。新しい空のインスタンスを初期化、 Hashtable クラスの指定した初期量を使用して、テーブル占有率、ハッシュ コード プロバイダー、および比較子。

System_CAPS_protmethodHashtable(SerializationInfo, StreamingContext)

新しい空のインスタンスを初期化、 Hashtable を指定してシリアル化できるクラス SerializationInfoStreamingContext オブジェクトです。

名前説明
System_CAPS_protpropertycomparer

互換性のために残されています。取得または設定、 IComparer に使用する、 Hashtableです。

System_CAPS_pubpropertyCount

Hashtable に格納されているキー/値ペアの数を取得します。

System_CAPS_protpropertyEqualityComparer

取得、 IEqualityComparer に使用する、 Hashtableです。

System_CAPS_protpropertyhcp

互換性のために残されています。ハッシュ コードを提供できるオブジェクトを取得または設定します。

System_CAPS_pubpropertyIsFixedSize

Hashtable が固定サイズかどうかを示す値を取得します。

System_CAPS_pubpropertyIsReadOnly

Hashtable が読み取り専用かどうかを示す値を取得します。

System_CAPS_pubpropertyIsSynchronized

Hashtable へのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。

System_CAPS_pubpropertyItem[Object]

指定されたキーに関連付けられている値を取得または設定します。

System_CAPS_pubpropertyKeys

取得、 ICollection でキーを含む、 Hashtableです。

System_CAPS_pubpropertySyncRoot

Hashtable へのアクセスを同期するために使用できるオブジェクトを取得します。

System_CAPS_pubpropertyValues

ICollection 内の値を格納している Hashtable を取得します。

名前説明
System_CAPS_pubmethodAdd(Object, Object)

指定したキーおよび値を持つ要素を Hashtable に追加します。

System_CAPS_pubmethodClear()

Hashtable からすべての要素を削除します。

System_CAPS_pubmethodClone()

Hashtable の簡易コピーを作成します。

System_CAPS_pubmethodContains(Object)

Hashtable に特定のキーが格納されているかどうかを判断します。

System_CAPS_pubmethodContainsKey(Object)

Hashtable に特定のキーが格納されているかどうかを判断します。

System_CAPS_pubmethodContainsValue(Object)

Hashtable に特定の値が格納されているかどうかを判断します。

System_CAPS_pubmethodCopyTo(Array, Int32)

コピー、 Hashtable 要素を 1 次元 Array インスタンスの指定したインデックス位置。

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_protmethodFinalize()

オブジェクトが、ガベージ コレクションによって収集される前に、リソースの解放とその他のクリーンアップ操作の実行を試みることができるようにします。(Object から継承されます。)

System_CAPS_pubmethodGetEnumerator()

返します。、 IDictionaryEnumerator を反復処理する、 Hashtableです。

System_CAPS_protmethodGetHash(Object)

指定したキーのハッシュ コードを返します。

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

実装して、 ISerializable インターフェイスし、シリアル化するために必要なデータを返す、 Hashtableです。

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_protmethodKeyEquals(Object, Object)

特定の比較 Object 内の特定のキーを持つ、 Hashtableです。

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_pubmethodOnDeserialization(Object)

ISerializable インターフェイスを実装し、逆シリアル化が完了したときに逆シリアル化イベントを発生させます。

System_CAPS_pubmethodRemove(Object)

指定したキーを持つ要素を Hashtable から削除します。

System_CAPS_pubmethodSystem_CAPS_staticSynchronized(Hashtable)

用の同期 (スレッド セーフな) ラッパーを返す、 Hashtableです。

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。(Object から継承されます。)

名前説明
System_CAPS_pubinterfaceSystem_CAPS_privmethodIEnumerable.GetEnumerator()

コレクションを反復処理する列挙子を返します。

名前説明
System_CAPS_pubmethodAsParallel()

オーバーロードされます。クエリの並列化を有効にします。(ParallelEnumerable によって定義されています。)

System_CAPS_pubmethodAsQueryable()

オーバーロードされます。変換、 IEnumerable に、 IQueryableです。(Queryable によって定義されています。)

System_CAPS_pubmethodCast<TResult>()

要素をキャスト、 IEnumerable 指定した型にします。(Enumerable によって定義されています。)

System_CAPS_pubmethodOfType<TResult>()

要素をフィルター処理、 IEnumerable 、指定した型に基づいています。(Enumerable によって定義されています。)

System_CAPS_noteメモ

この型の .NET Framework ソース コードを表示するを参照してください。、 Reference Sourceです。 ソース コードをオンラインで参照、オフラインで表示、リファレンスをダウンロードおよび; デバッグ中にソース (パッチや更新を含む) をステップsee instructions.

各要素に格納されているキー/値ペアは、DictionaryEntryオブジェクト。 キーにはnull値を指定できますが、します。

キーとして使用されるオブジェクト、Hashtableをオーバーライドするために必要なObject.GetHashCodeメソッド (またはIHashCodeProviderインターフェイス) およびObject.Equalsメソッド (またはIComparerインターフェイス)。 メソッドとインターフェイスの両方の実装でも、大文字小文字の区別を同じ方法で処理する必要があります。それ以外の場合、Hashtable動作可能性があります。 例では、作成するときに、 Hashtable、使用する必要があります、CaseInsensitiveHashCodeProviderクラス (またはその大文字と小文字IHashCodeProvider実装) で、CaseInsensitiveComparerクラス (またはその大文字と小文字IComparer実装)。

これらのメソッドが、キーが存在するときに、同じパラメーターで呼び出されたときに、同じ結果を生成する必要がありますさらに、Hashtableです。 代わりに使用するが、Hashtableコンス トラクター、IEqualityComparerパラメーター。 キーの等値に単に参照の等価性を継承して実装されたかどうかはObject.GetHashCodeObject.Equalsが十分に機能します。

内のキーとして使用される限りに主要なオブジェクトが変更可能にする必要があります、Hashtableです。

要素が追加されたとき、Hashtable要素は、キーのハッシュ コードに基づいてバケットに配置されます。 キーの後続の参照は、要素を検索するために必要なキーの比較の数を大幅に削減するためだけに 1 つのバケットで検索するキーのハッシュ コードを使用します。

占有率、Hashtableバケット数に対する要素の最大比率を決定します。 小さい負荷の要因が高速検索時間は平均的増加後のメモリ消費量がが欠点です。 1.0 の既定の占有率は一般に、速度とサイズの最適なバランスを提供します。 別の占有率はすることもできる時に指定された、Hashtableが作成されます。

要素が追加されるにつれて、Hashtableの実際の占有率、Hashtableが増加します。 実際の占有率が、指定された占有率、バケットの数に達したとき、Hashtableは 2 回、現在の数より大きい最小の素数を自動的に増加Hashtableバケット。

内の各キー オブジェクト、Hashtable呼び出すことによってアクセスできる独自のハッシュ関数を提供する必要がありますGetHashです。 ただし、いずれかのオブジェクトを実装するIHashCodeProviderに渡すことができます、Hashtableコンス トラクター、およびテーブル内のすべてのオブジェクトに対してハッシュ関数を使用します。

容量、Hashtable要素の数が、Hashtableを保持できます。 要素が追加されるにつれて、Hashtable容量を増やすは自動的に再割り当て、必要に応じて。

非常に大きなHashtableオブジェクト、設定して、64 ビット システム上の 20億要素に最大の容量を増やすことができます、enabledする構成要素の属性true実行時環境でします。

foreach C# 言語のステートメント (For Each Visual Basic で)、コレクション内の要素の型のオブジェクトを返します。 以降の各要素、Hashtableキー/値ペアは、要素型は、キーの型または値の型ではありません。 要素の型は、代わりに、DictionaryEntryです。 例:

foreach(DictionaryEntry de in myHashtable)
{
    // ...
}

foreachステートメントがしか書き込まないことから、コレクションへの読み取りを許可する列挙子のラッパー。

列挙子をシリアル化とシリアル化するため、Hashtableの要素を並べ替えるになる可能性があります、呼び出さずに列挙を続行することはできません、Resetメソッドです。

System_CAPS_noteメモ

キーを継承することができ、その動作を変更、絶対一意性は保証できませんを使用する比較であるため、Equalsメソッドです。

次の例は、作成、初期化、およびさまざまな機能を実行する方法を示しています、Hashtableとそのキーと値を出力する方法です。

using System;
using System.Collections;

class Example
{
    public static void Main()
    {
        // Create a new hash table.
        //
        Hashtable openWith = new Hashtable();

        // Add some elements to the hash table. There are no 
        // duplicate keys, but some of the values are duplicates.
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("dib", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // The Add method throws an exception if the new key is 
        // already in the hash table.
        try
        {
            openWith.Add("txt", "winword.exe");
        }
        catch
        {
            Console.WriteLine("An element with Key = \"txt\" already exists.");
        }

        // The Item property is the default property, so you 
        // can omit its name when accessing elements. 
        Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);

        // The default Item property can be used to change the value
        // associated with a key.
        openWith["rtf"] = "winword.exe";
        Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);

        // If a key does not exist, setting the default Item property
        // for that key adds a new key/value pair.
        openWith["doc"] = "winword.exe";

        // ContainsKey can be used to test keys before inserting 
        // them.
        if (!openWith.ContainsKey("ht"))
        {
            openWith.Add("ht", "hypertrm.exe");
            Console.WriteLine("Value added for key = \"ht\": {0}", openWith["ht"]);
        }

        // When you use foreach to enumerate hash table elements,
        // the elements are retrieved as KeyValuePair objects.
        Console.WriteLine();
        foreach( DictionaryEntry de in openWith )
        {
            Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
        }

        // To get the values alone, use the Values property.
        ICollection valueColl = openWith.Values;

        // The elements of the ValueCollection are strongly typed
        // with the type that was specified for hash table values.
        Console.WriteLine();
        foreach( string s in valueColl )
        {
            Console.WriteLine("Value = {0}", s);
        }

        // To get the keys alone, use the Keys property.
        ICollection keyColl = openWith.Keys;

        // The elements of the KeyCollection are strongly typed
        // with the type that was specified for hash table keys.
        Console.WriteLine();
        foreach( string s in keyColl )
        {
            Console.WriteLine("Key = {0}", s);
        }

        // Use the Remove method to remove a key/value pair.
        Console.WriteLine("\nRemove(\"doc\")");
        openWith.Remove("doc");

        if (!openWith.ContainsKey("doc"))
        {
            Console.WriteLine("Key \"doc\" is not found.");
        }
    }
}

/* This code example produces the following output:

An element with Key = "txt" already exists.
For key = "rtf", value = wordpad.exe.
For key = "rtf", value = winword.exe.
Value added for key = "ht": hypertrm.exe

Key = dib, Value = paint.exe
Key = txt, Value = notepad.exe
Key = ht, Value = hypertrm.exe
Key = bmp, Value = paint.exe
Key = rtf, Value = winword.exe
Key = doc, Value = winword.exe

Value = paint.exe
Value = notepad.exe
Value = hypertrm.exe
Value = paint.exe
Value = winword.exe
Value = winword.exe

Key = dib
Key = txt
Key = ht
Key = bmp
Key = rtf
Key = doc

Remove("doc")
Key "doc" is not found.
 */

ユニバーサル Windows プラットフォーム
10 以降で使用可能
.NET Framework
1.1 以降で使用可能

Hashtableスレッドが複数のリーダー スレッドと 1 つの書き込みのスレッドを使用しても安全です。 スレッド セーフであるはマルチ スレッドを使用時に (更新) の書き込み操作を実行、スレッドの 1 つだけロック制御不要の読み取り、ライターにシリアル化を可能にする、Hashtableです。 複数のライターのすべての操作をサポートするために、Hashtableによって返されるラッパーを介して行う必要があります、Synchronized読み取り中のスレッドがないことに指定されるメソッド、Hashtableオブジェクト。

コレクションの列挙は本質的にスレッド セーフな方法です。 コレクションの同期がとられている場合でも、別のスレッドによってそのコレクションを変更できるため、変更の結果として列挙子は例外をスローします。 列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。

トップに戻る
表示: