컴파일러 오류 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);
      }
   }
}