Error del compilador CS0202
Actualización: noviembre 2007
Mensaje de error
foreach requiere que el tipo de valor devuelto 'tipo' de 'type.GetEnumerator()' tenga un método MoveNext público y una propiedad Current adecuados
foreach requires that the return type 'type' of 'type.GetEnumerator()' must have a suitable public MoveNext method and public Current property
Una función GetEnumerator, utilizada para habilitar el uso de instrucciones foreach, no puede devolver un puntero o una matriz; debe devolver una instancia de una clase que pueda 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 obtener más información, vea los ejemplos de código de Interfaces genéricas (Guía de programación de C#). |
El código siguiente genera el error 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);
}
}
}