Avviso del compilatore (livello 2) CS0278

Aggiornamento: novembre 2007

Messaggio di errore

'tipo' non implementa il modello 'nome modello'. 'nome metodo' è ambiguo con 'nome metodo'.
'type' does not implement the 'pattern name' pattern. 'method name' is ambiguous with 'method name'.

In C# alcune istruzioni, quali foreach e using, si basano su modelli definiti. Ad esempio, l'istruzione foreach si basa sulla classe Collection che implementa il modello "enumerabile".

È possibile che l'avviso CS0278 venga visualizzato quando il compilatore non è in grado di creare la corrispondenza corretta a causa di alcune ambiguità, ad esempio se per il modello "enumerabile" è necessario un metodo denominato MoveNext e nel codice sono contenuti due metodi denominati MoveNext. Il compilatore tenterà di trovare un'interfaccia da utilizzare. È tuttavia opportuno determinare la causa dell'ambiguità e correggerla.

Per ulteriori informazioni, vedere Procedura: accedere a una classe di insiemi con foreach (Guida per programmatori C#).

Esempio

Il seguente codice di esempio genera l'avviso CS0278:

// CS0278.cs
using System.Collections.Generic;
public class myTest 
{
   public static void TestForeach<W>(W w) 
      where W: IEnumerable<int>, IEnumerable<string>
   {
      foreach (int i in w) {}   // CS0278
   }
}