次の方法で共有


Dictionary<TKey,TValue>.Enumerator 構造体

定義

Dictionary<TKey,TValue> の要素を列挙します。

public: value class Dictionary<TKey, TValue>::Enumerator : System::Collections::Generic::IEnumerator<System::Collections::Generic::KeyValuePair<TKey, TValue>>, System::Collections::IDictionaryEnumerator
public struct Dictionary<TKey,TValue>.Enumerator : System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey,TValue>>, System.Collections.IDictionaryEnumerator
[System.Serializable]
public struct Dictionary<TKey,TValue>.Enumerator : System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<TKey,TValue>>, System.Collections.IDictionaryEnumerator
type Dictionary<'Key, 'Value>.Enumerator = struct
    interface IEnumerator<KeyValuePair<'Key, 'Value>>
    interface IEnumerator
    interface IDisposable
    interface IDictionaryEnumerator
[<System.Serializable>]
type Dictionary<'Key, 'Value>.Enumerator = struct
    interface IEnumerator<KeyValuePair<'Key, 'Value>>
    interface IDisposable
    interface IDictionaryEnumerator
    interface IEnumerator
[<System.Serializable>]
type Dictionary<'Key, 'Value>.Enumerator = struct
    interface IEnumerator<KeyValuePair<'Key, 'Value>>
    interface IDisposable
    interface IEnumerator
    interface IDictionaryEnumerator
type Dictionary<'Key, 'Value>.Enumerator = struct
    interface IEnumerator<KeyValuePair<'Key, 'Value>>
    interface IDictionaryEnumerator
    interface IEnumerator
    interface IDisposable
Public Structure Dictionary(Of TKey, TValue).Enumerator
Implements IDictionaryEnumerator, IEnumerator(Of KeyValuePair(Of TKey, TValue))

型パラメーター

TKey
TValue
継承
Dictionary<TKey,TValue>.Enumerator
属性
実装

注釈

foreach C# 言語の ステートメント (for eachC++、Visual Basic では) は、For Each列挙子の複雑さを隠します。 したがって、列挙子を直接操作するのではなく、foreach を使用することをお勧めします。

列挙子を使用すると、コレクション内のデータを読み取ることができますが、基になるコレクションを変更することはできません。

最初、列挙子はコレクションの先頭の要素の前に位置付けられます。 この位置では、Current が未定義です。 の値を読み取る前に、 を呼び出 MoveNext して列挙子をコレクションの最初の Current要素に進める必要があります。

Current は、MoveNext が呼び出されるまでは同じオブジェクトを返します。 MoveNext は、Current を次の要素に進めます。

MoveNext がコレクションの末尾を通過した場合、列挙子がコレクション内の最後の要素の後に配置され、MoveNextfalse を返します。 列挙子がこの位置にある場合、後続の MoveNext 呼び出しも false を返します。 が返された falseCurrent の最後のMoveNext呼び出しが未定義の場合。 Current を、再度、コレクションの最初の要素に設定することはできません。列挙子の新しいインスタンスを作成する必要があります。

列挙子は、コレクションが変更されない限り有効です。 要素の追加や容量の変更など、コレクションに変更が加えられた場合、列挙子は回復不能に無効になり、次に を呼び出すかIEnumerator.Reset、 をMoveNextスローしますInvalidOperationException

.NET Core 3.0 以降のみ: 列挙子を無効にしない唯一の変更メソッドは と ClearですRemove

列挙子はコレクションに排他アクセスできないため、コレクションの列挙処理は本質的にスレッド セーフな処理ではありません。 列挙処理でスレッド セーフを確保するには、列挙処理が終わるまでコレクションをロックできます。 コレクションに対し複数のスレッドがアクセスして読み取りや書き込みを行うことができるようにするには、独自に同期化を実装する必要があります。

System.Collections.Generic コレクションの既定の実装は同期されません。

プロパティ

Current

列挙子の現在位置の要素を取得します。

メソッド

Dispose()

Dictionary<TKey,TValue>.Enumerator によって使用されているすべてのリソースを解放します。

MoveNext()

列挙子を Dictionary<TKey,TValue> の次の要素に進めます。

明示的なインターフェイスの実装

IDictionaryEnumerator.Entry

列挙子の現在位置の要素を取得します。

IDictionaryEnumerator.Key

列挙子の現在位置の要素のキーを取得します。

IDictionaryEnumerator.Value

列挙子の現在位置の要素の値を取得します。

IEnumerator.Current

列挙子の現在位置の要素を取得します。

IEnumerator.Reset()

列挙子を初期位置、つまりコレクションの最初の要素の前に設定します。

適用対象

こちらもご覧ください