Partager via


Erreur du compilateur CS0202

Mise à jour : novembre 2007

Message d'erreur

foreach requiert que le type de retour 'type' de 'type.GetEnumerator()' possède une méthode MoveNext publique adéquate et une propriété Current publique
foreach requires that the return type 'type' of 'type.GetEnumerator()' must have a suitable public MoveNext method and public Current property

Une fonction GetEnumerator, utilisée pour activer l'utilisation d'instructions foreach, ne peut pas retourner un pointeur ou un tableau ; elle doit retourner une instance de classe qui est capable d'agir comme un énumérateur. Les configurations adéquates pour servir d'énumérateur sont notamment une propriété Current publique et une méthode MoveNext publique.

Remarque :

Dans C# 2.0, le compilateur générera automatiquement Current et MoveNext. Pour plus d'informations, consultez l'exemple de code dans Interfaces génériques (Guide de programmation C#).

L'exemple suivant génère l'erreur 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);
      }
   }
}