C#의 CharEnumerator.Reset() 메서드는 열거 중인 문자열의 첫 번째 문자보다 논리적으로 앞선 위치로 인덱스를 초기화하는 역할을 합니다. 이 메서드를 호출하면 다시 MoveNext()를 통해 처음부터 문자열을 순회할 수 있습니다.
문법
public void Reset();
Reset() 메서드는 매개변수를 받지 않으며, 반환값도 없습니다. 단순히 열거자의 현재 위치를 초기 상태로 되돌립니다.
주요 특징
- 열거자의 위치를 문자열 시작 이전의 초기 상태로 되돌립니다.
- Reset() 호출 후에는 반드시 MoveNext()를 먼저 호출해야 Current 속성에 접근할 수 있습니다.
- 동일한 열거자 객체로 문자열을 여러 번 순회해야 할 때 유용합니다.
예제
다음은 CharEnumerator.Reset() 메서드를 구현한 예제입니다.
using System;
public class Demo {
public static void Main(){
string strNum = "This is it!";
CharEnumerator ch = strNum.GetEnumerator();
Console.WriteLine("HashCode = "+ch.GetHashCode());
Console.WriteLine("Get the Type = "+ch.GetType());
while (ch.MoveNext())
Console.Write(ch.Current + " ");
ch.Reset();
Console.WriteLine();
while (ch.MoveNext())
Console.Write(ch.Current);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과가 나타납니다.
HashCode = 65311716 Get the Type = System.CharEnumerator T h i s i s i t ! This is it!
코드 설명
위 예제에서는 먼저 GetEnumerator() 메서드를 사용하여 문자열의 CharEnumerator 객체를 생성합니다. 첫 번째 while 루프에서는 MoveNext()와 Current를 활용해 각 문자를 공백으로 구분하여 출력합니다. 그런 다음 Reset() 메서드를 호출하여 열거자의 위치를 초기화하고, 두 번째 while 루프에서 동일한 열거자로 문자열을 다시 한 번 순회하여 출력합니다. 이처럼 Reset() 메서드를 사용하면 새로운 열거자를 생성하지 않고도 기존 열거자를 재사용할 수 있다는 장점이 있습니다.