컴파일러 오류 CS0202
업데이트: 2007년 11월
오류 메시지
foreach의 반환 형식 'type'('type.GetEnumerator()')에는 적절한 공용 MoveNext 메서드 및 공용 Current 속성이 있어야 합니다.
foreach requires that the return type 'type' of 'type.GetEnumerator()' must have a suitable public MoveNext method and public Current property
foreach 문을 활성화하는 데 사용되는 GetEnumerator 함수에서는 포인터나 배열을 반환할 수 없습니다. 이 함수에서는 열거자로 사용될 수 있는 클래스의 인스턴스를 반환해야 합니다. 열거자 역할을 하려면 해당 클래스에 공용 Current 속성과 공용 MoveNext 메서드가 포함되어 있어야 합니다.
참고: |
---|
C# 2.0에서는 Current 속성과 MoveNext 메서드가 컴파일러에서 자동으로 생성됩니다. 자세한 내용은 제네릭 인터페이스(C# 프로그래밍 가이드)의 코드 예제를 참조하십시오. |
다음 샘플에서는 CS0202 오류가 발생하는 경우를 보여 줍니다.
// CS0202.cs
public class C1
{
public int Current
{
get
{
return 0;
}
}
public bool MoveNext ()
{
return false;
}
public static implicit operator C1 (int c1)
{
return 0;
}
}
public class C2
{
public int Current
{
get
{
return 0;
}
}
public bool MoveNext ()
{
return false;
}
public C1[] GetEnumerator ()
// try the following line instead
// public C1 GetEnumerator ()
{
return null;
}
}
public class MainClass
{
public static void Main ()
{
C2 c2 = new C2();
foreach (C1 x in c2) // CS0202
{
System.Console.WriteLine(x.Current);
}
}
}