DataTableReader.GetEnumerator 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
항목 컬렉션 전체에서 반복하는 데 사용할 수 있는 열거자를 반환합니다.
public:
override System::Collections::IEnumerator ^ GetEnumerator();
public override System.Collections.IEnumerator GetEnumerator ();
override this.GetEnumerator : unit -> System.Collections.IEnumerator
Public Overrides Function GetEnumerator () As IEnumerator
반환
항목 컬렉션을 나타내는 IEnumerator 개체입니다.
예외
닫힌 DataTableReader의 열을 읽거나 액세스하려고 한 경우
예제
다음 예제에서는 GetEnumerator 메서드를 사용하는 방법을 보여 줍니다. 여기에 열거자의 동작을 기본 행을 삭제할 때는 DataTable 열거자를 활성화 합니다.
public static void Main()
{
try
{
DataTable userTable = new DataTable("peopleTable");
userTable.Columns.Add("Id", typeof(int));
userTable.Columns.Add("Name", typeof(string));
// Note that even if you create the DataTableReader
// before adding the rows, the enumerator can still
// visit all the rows.
DataTableReader reader = userTable.CreateDataReader();
userTable.Rows.Add(new object[] { 1, "Peter" });
userTable.Rows.Add(new object[] { 2, "Mary" });
userTable.Rows.Add(new object[] { 3, "Andy" });
userTable.Rows.Add(new object[] { 4, "Russ" });
IEnumerator enumerator = reader.GetEnumerator();
// Keep track of whether the row to be deleted
// has actually been deleted yet. This allows
// this sample to demonstrate that the enumerator
// is able to survive row deletion.
bool isRowDeleted = false;
while (enumerator.MoveNext())
{
DbDataRecord dataRecord = (DbDataRecord)enumerator.Current;
// While the enumerator is active, delete a row.
// This doesn't affect the behavior of the enumerator.
if (!isRowDeleted)
{
isRowDeleted = true;
userTable.Rows[2].Delete();
}
Console.WriteLine(dataRecord.GetString(1));
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
Console.ReadLine();
}
Sub Main()
Try
Dim userTable As New DataTable("peopleTable")
userTable.Columns.Add("Id", GetType(Integer))
userTable.Columns.Add("Name", GetType(String))
' Note that even if you create the DataTableReader
' before adding the rows, the enumerator can still
' visit all the rows.
Dim reader As DataTableReader = userTable.CreateDataReader()
userTable.Rows.Add(1, "Peter")
userTable.Rows.Add(2, "Mary")
userTable.Rows.Add(3, "Andy")
userTable.Rows.Add(4, "Russ")
Dim enumerator As IEnumerator = reader.GetEnumerator()
' Keep track of whether the row to be deleted
' has actually been deleted yet. This allows
' this sample to demonstrate that the enumerator
' is able to survive row deletion.
Dim isRowDeleted As Boolean = False
While (enumerator.MoveNext())
Dim dataRecord As DbDataRecord = CType(enumerator.Current, _
DbDataRecord)
' While the enumerator is active, delete a row.
' This doesn't affect the behavior of the enumerator.
If Not isRowDeleted Then
isRowDeleted = True
userTable.Rows(2).Delete()
End If
Console.WriteLine(dataRecord.GetString(1))
End While
Catch ex As Exception
Console.WriteLine(ex)
End Try
Console.ReadLine()
End Sub
콘솔 창에 다음 텍스트를 표시 하는 절차:
Peter
Mary
Russ
설명
열거자의 데이터 읽기에 대 한 허용 된 DataTableReader합니다. 내부 컬렉션을 수정 하 여 열거자를 사용할 수 없습니다.
처음에 열거자를 컬렉션의 첫 번째 요소 앞에 배치 됩니다. 이 위치에서, 호출 Current 예외를 throw 합니다. 따라서 MoveNext
의 값을 읽기 전에 Current
를 호출하여 열거자를 해당 컬렉션의 첫 번째 요소로 보내야 합니다.
Current
반환을 DbDataRecord, 될 때까지 동일한 개체를 반환 하 고 MoveNext 또는 Reset 라고 합니다. MoveNext
는 Current
를 다음 요소로 설정합니다.
열거자가 컬렉션에서 마지막 요소 뒤에 배치 하 고 호출 컬렉션의 끝이 전달 된 후 MoveNext
false를 반환 합니다. 마지막으로 호출 하는 경우 MoveNext
반환 false
호출, Current
예외를 throw 합니다. 또한 때문에 DataTableReader 호출에서 해당 데이터에 대 한 정방향 전용 액세스를 제공 합니다 Reset IEnumerator의 메서드에서 throw를 NotSupportedException.
DataTableReader 안정적인 열거자를 제공 합니다. 즉, 기본 데이터 내에서 발생 하는 행 삭제 또는 추가 하는 경우에, 호출 하 여 반환 된 열거자 GetEnumerator 여전히 유효 합니다.
적용 대상
.NET