IEnumerator.Reset メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
列挙子を最初の位置 (コレクション内の最初の要素の前) に設定します。
public:
void Reset();
public void Reset();
abstract member Reset : unit -> unit
Public Sub Reset ()
例外
列挙子の作成後にコレクションが変更されました。
列挙子はリセットをサポートしていません。
例
次のコード例は、カスタム コレクションの IEnumerator インターフェイスの実装を示しています。 この例では、 Reset は明示的に呼び出されませんが、 foreach の使用をサポートするように実装されています (Visual Basic のfor each )。 このコード例は、 IEnumerator インターフェイスの大きな例の一部です。
// When you implement IEnumerable, you must also implement IEnumerator.
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;
}
object IEnumerator.Current
{
get
{
return Current;
}
}
public Person Current
{
get
{
try
{
return _people[position];
}
catch (IndexOutOfRangeException)
{
throw new InvalidOperationException();
}
}
}
}
' When you implement IEnumerable, you must also implement 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
注釈
要素の追加、変更、削除など、コレクションに変更が加えられた場合、 Reset の動作は未定義です。
Resetメソッドは、COM の相互運用性のために提供されています。 必ずしも実装する必要はありません。代わりに、実装者は単に NotSupportedExceptionをスローできます。
注意 (実装者)
Reset()のすべての呼び出しは、列挙子に対して同じ状態にする必要があります。 推奨される実装は、列挙子をコレクションの先頭 (最初の要素の前) に移動することです。 これにより、列挙子の作成後にコレクションが変更された場合に列挙子が無効になります。これは、 MoveNext() および Currentと一致します。