Compilerfehler CS0202

Aktualisiert: November 2007

Fehlermeldung

Für "foreach" muss der Rückgabetyp "Typ" von "'type.GetEnumerator()" über eine passende öffentliche MoveNext-Methode und eine öffentliche Current-Eigenschaft verfügen.
foreach requires that the return type 'type' of 'type.GetEnumerator()' must have a suitable public MoveNext method and public Current property

Eine GetEnumerator-Funktion, die zur Aktivierung der Verwendung von foreach-Anweisungen verwendet wird, kann weder einen Zeiger noch ein Array zurückgeben. Sie muss eine Instanz einer Klasse zurückgeben, die als Enumerator agieren kann. Die Anforderungen an einen Enumerator schließen eine öffentliche Current-Eigenschaft und eine öffentliche MoveNext-Methode ein.

Hinweis:

In C# 2.0 werden Current und MoveNext vom Compiler automatisch generiert . Weitere Informationen finden Sie im Codebeispiel unter Generische Schnittstellen (C#-Programmierhandbuch).

Im folgenden Beispiel wird CS0202 generiert:

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