IEnumerator.Current プロパティ
アセンブリ: mscorlib (mscorlib.dll 内)


次のいずれかの条件が満たされる場合、Current は未定義です。
-
列挙子が、その列挙子が作成された直後に、コレクションの最初の要素の前に位置付けられています。Current の値を読み取る前に、MoveNext を呼び出して列挙子をコレクションの最初の要素の位置に進める必要があります。
Current は、MoveNext が呼び出されるまでは同じオブジェクトを返します。MoveNext は、Current を次の要素に設定します。
実装時の注意 このインターフェイスを実装するには、非ジェネリックの IEnumerator インターフェイスを実装する必要があります。Current プロパティは、両方のインターフェイスに含まれていますが、戻り値の型が異なります。非ジェネリックの IEnumerator.Current プロパティを明示的なインターフェイスの実装として実装します。これにより、非ジェネリック インターフェイスのコンシューマがジェネリック インターフェイスを使用できます。
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IEnumerator ジェネリック インターフェイス
IEnumerator メンバ
System.Collections.Generic 名前空間
IEnumerator.Current プロパティ
IEnumerator.MoveNext
IEnumerator.Current プロパティ
アセンブリ: mscorlib (mscorlib.dll 内)



列挙子を作成した後や Reset メソッドを呼び出した後に、コレクションの最初の要素に列挙子を進めるためには、Current プロパティの値を読み取る前に MoveNext メソッドを呼び出す必要があります。そうしない場合、Current は未定義になります。
MoveNext への最後の呼び出しで、コレクションの末尾を示す false が返された場合、Current は例外もスローします。
Current は列挙子の位置を移動しません。そのため、Current を連続して呼び出した場合、MoveNext または Reset が呼び出されるまでは同じオブジェクトが返されます。
コレクションが変更されない限り、列挙子は有効なままです。要素の追加、変更、削除などの変更がコレクションに対して実行されると、列挙子は回復不可能な無効状態になり、次に MoveNext または Reset を呼び出すと InvalidOperationException がスローされます。MoveNext と Current の間でコレクションを変更すると、列挙子が無効になっている場合でも、Current が設定先の要素を返します。

カスタム コレクションでの IEnumerator インターフェイスの実装を次のコード例に示します。この例では、Current が明示的に呼び出されていませんが、foreach (Visual Basic では for each) の使用をサポートするために実装されています。このコード例は、IEnumerator インターフェイスのトピックで取り上げているコード例の一部です。
Public Class PeopleEnum Implements IEnumerator Public _people() As Person ' Enumerators are positioned before the first element ' until the first MoveNext() call. Dim position As Integer = -1 Public Sub New(ByVal list() As Person) _people = list End Sub Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext position = position + 1 Return (position < _people.Length) End Function Public Sub Reset() Implements IEnumerator.Reset position = -1 End Sub Public ReadOnly Property Current() As Object Implements IEnumerator.Current Get Try Return _people(position) Catch ex As IndexOutOfRangeException Throw New InvalidOperationException() End Try End Get End Property End Class
public class PeopleEnum : IEnumerator { public Person[] _people; // Enumerators are positioned before the first element // until the first MoveNext() call. int position = -1; public PeopleEnum(Person[] list) { _people = list; } public bool MoveNext() { position++; return (position < _people.Length); } public void Reset() { position = -1; } public object Current { get { try { return _people[position]; } catch (IndexOutOfRangeException) { throw new InvalidOperationException(); } } } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からIEnumerator.Currentを検索する場合は、下記のリンクをクリックしてください。

- IEnumerator.Currentのページへのリンク