다음을 통해 공유


Strokes.StrokesEnumerator.Current 속성

업데이트: 2007년 11월

Strokes 컬렉션에서 열거자가 가리키는 Stroke 개체를 가져옵니다.

네임스페이스:  Microsoft.Ink
어셈블리:  Microsoft.Ink(Microsoft.Ink.dll)

구문

‘선언
Public ReadOnly Property Current As Stroke
‘사용 방법
Dim instance As Strokes..::.StrokesEnumerator
Dim value As Stroke

value = instance.Current
public Stroke Current { get; }
public:
property Stroke^ Current {
    Stroke^ get ();
}
/** @property */
public Stroke get_Current()
public function get Current () : Stroke

속성 값

형식: Microsoft.Ink.Stroke
Strokes 컬렉션에서 열거자가 가리키는 Stroke 개체입니다.

설명

Strokes.StrokesEnumerator 열거자를 만들었거나 Reset 메서드를 호출한 후에는 Current 속성 값을 읽기 전에 MoveNext 메서드를 호출하여 열거자를 컬렉션의 첫 번째 요소로 이동해야 합니다. 이렇게 하지 않으면 Current 속성이 정의되지 않습니다.

MoveNext 메서드를 마지막으로 호출할 때 false가 반환된 경우 Current 속성에서 예외가 throw됩니다. MoveNext 메서드를 마지막으로 호출할 때 false가 반환된 경우 열거자가 Strokes 컬렉션의 끝에 도달한 것입니다.

Current 속성은 열거자의 위치를 이동하지 않습니다. Current 속성을 연속해서 호출하면 MoveNext 또는 Reset 메서드가 호출될 때까지 동일한 개체가 반환됩니다.

열거자는 컬렉션이 변경되지 않은 상태로 유지되는 한 유효합니다. 요소를 추가, 수정 또는 삭제하는 등 컬렉션을 변경하면 열거자가 무효화되며 이러한 상태를 복구할 수 없습니다. 다음 번에 MoveNext 또는 Reset 메서드를 호출하면 InvalidOperationException 예외가 throw됩니다. MoveNext 메서드를 호출하는 시점과 Current 속성을 호출하는 시점 사이에서 컬렉션이 수정된 경우 Current 속성은 열거자가 이미 무효화된 경우에도 자신이 가리키는 요소를 반환합니다.

예제

이 예제에서는 Strokes 컬렉션을 열거하여 컬렉션에 들어 있는 각 Stroke 개체를 검색하는 두 가지 방법을 보여 줍니다. Ink.Strokes 속성에서 Strokes 컬렉션을 반환합니다.

이 예제에서는 Strokes 컬렉션의 IEnumerator를 가져와서 컬렉션을 순회하는 데 사용합니다.

Private Sub EnumerateStrokesWithEnumerator(ByVal mInk As Ink)
    ' access the Strokes property via using statement
    ' to insure that the object mStrokes is disposed when finished
    ' Otherwise, you will have a memory leak
    Using mStrokes As Strokes = mInk.Strokes
        Dim mStrokesEnumerator As IEnumerator = mStrokes.GetEnumerator()
        mStrokesEnumerator.Reset()
        While (mStrokesEnumerator.MoveNext())
            Dim S As Stroke = DirectCast(mStrokesEnumerator.Current, Stroke)
            Me.listBoxStrokeId.Items.Add(S.Id)
        End While
    End Using
End Sub
private void EnumerateStrokesWithEnumerator(Ink mInk)
{
    // access the Strokes property via using statement
    // to insure that the object mStrokes is disposed when finished
    // Otherwise, you will have a memory leak
    using (Strokes mStrokes = mInk.Strokes)
    {
        IEnumerator mStrokesEnumerator = mStrokes.GetEnumerator();
        mStrokesEnumerator.Reset();
        while (mStrokesEnumerator.MoveNext())
        {
            Stroke S = (Stroke)mStrokesEnumerator.Current;
            this.listBoxStrokeId.Items.Add(S.Id);
        }
    }
}

이 예제에서는 foreach 문을 사용합니다. 이 명령문을 지원하기 위해 컴파일러에서 생성하는 내부 코드는 GetEnumerator 메서드를 호출합니다.

Private Sub EnumerateStrokesWithForEach(ByVal mInk As Ink)
    ' access the Strokes property via using statement
    ' to insure that the object mStrokes is disposed when finished
    ' Otherwise, you will have a memory leak
    Using mStrokes As Strokes = mInk.Strokes
        For Each S As Stroke In mStrokes
            Me.listBoxStrokeId.Items.Add(S.Id)
        Next
    End Using
End Sub
private void EnumerateStrokesWithForEach(Ink mInk)
{    
    // access the Strokes property via using statement
    // to insure that the object mStrokes is disposed when finished
    // Otherwise, you will have a memory leak
    using (Strokes mStrokes = mInk.Strokes)
    {
        foreach (Stroke S in mStrokes)
        {
            this.listBoxStrokeId.Items.Add(S.Id);
        }
    }
}

플랫폼

Windows Vista

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

3.0에서 지원

참고 항목

참조

Strokes.StrokesEnumerator 클래스

Strokes.StrokesEnumerator 멤버

Microsoft.Ink 네임스페이스

Strokes

Stroke

Strokes.StrokesEnumerator.MoveNext

Strokes.StrokesEnumerator.Reset

기타 리소스

System.Collections.IEnumerator