Advertencia del compilador (nivel 2) CS0278

Actualización: noviembre 2007

Mensaje de error

'tipo' no implementa el modelo 'nombre de modelo'. 'nombre de método' es ambiguo respecto a 'nombre de método'.
'type' does not implement the 'pattern name' pattern. 'method name' is ambiguous with 'method name'.

Hay varias instrucciones en C# que se basan en modelos definidos, como foreach y using. Por ejemplo, foreach se basa en la clase de colección que implementa el modelo "enumerable".

La advertencia CS0278 aparece cuando el compilador no puede establecer la correspondencia debido a las ambigüedades. Por ejemplo, el modelo "enumerable" requiere un método denominado MoveNext, y puede suceder que el código contenga dos métodos denominados MoveNext. El compilador intentará encontrar una interfaz para utilizarla, pero se recomienda determinar la causa de la ambigüedad y corregirla.

Para obtener más información, vea Cómo: Obtener acceso a una clase de colección mediante Foreach (Guía de programación de C#).

Ejemplo

El código siguiente genera la advertencia 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
   }
}