CS0202 de erro do compilador

Mensagem de erro

foreach requer que o tipo de retorno 'tipo' de 'type.GetEnumerator()' deve tenha um método MoveNext público adequado e a propriedade corrente pública

A GetEnumerator função, usada para habilitar o uso da instrução foreach não pode retornar um ponteiro ou matriz; ele deve retornar uma instância de uma classe que é capaz de atuar sistema autônomo um enumerador. sistema autônomo requisitos apropriados para servir sistema autônomo um enumerador incluem uma propriedade corrente pública e um método MoveNext público.

Observação:

Em translation from VPE for Csharp 2.0, o compilador gerará automaticamente corrente e MoveNext para você.Para obter mais informações, consulte o exemplo de código em Interfaces genéricos (guia de programação C#).

O exemplo a seguir gera 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);
      }
   }
}