Leer en inglés

Compartir a través de


Error del compilador CS0202

foreach requiere que el tipo de valor devuelto 'type' de 'type.GetEnumerator()' tenga un método MoveNext público y una propiedad Current pública adecuados

Una función GetEnumerator , que se usa para habilitar el uso de instrucciones foreach, no puede devolver un puntero o una matriz; debe devolver una instancia de clase que puede actuar como enumerador. Los requisitos apropiados para actuar como enumerador incluyen una propiedad Current pública y un método MoveNext público.

Nota

En C# 2.0, el compilador generará automáticamente Current y MoveNext. Para más información, consulte el ejemplo de código en Interfaces genéricas.

El ejemplo siguiente genera la advertencia CS0202:

C#
// 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);  
      }  
   }  
}