Leggere in inglese

Condividi tramite


Errore del compilatore CS0202

Con foreach il tipo restituito ''type' di 'type.GetEnumerator()' deve essere associato a un metodo MoveNext pubblico e a una proprietà Current pubblica appropriati

Una funzione GetEnumerator , usata per abilitare l'uso delle istruzioni foreach, non può restituire un puntatore o una matrice, ma un'istanza di una classe che può fungere da enumeratore. I requisiti da soddisfare per fungere da enumeratore includono la proprietà public Current e il metodo public MoveNext.

Nota

In C# 2.0 il metodo MoveNext e la proprietà Current vengono generati automaticamente. Per altre informazioni, vedere l'esempio di codice in Interfacce generiche.

L'esempio seguente genera l'errore 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);  
      }  
   }  
}