Прочитать на английском

Поделиться через


Предупреждение компилятора (уровень 2) CS0278

"тип" не реализует шаблон "имя_шаблона". "имя метода" является неоднозначным с "имя метода".

В C# существует несколько операторов, основывающихся на заданных шаблонах, таких как foreach и using. Например, инструкция зависит от класса коллекции, foreach реализующего шаблон перечисления.

Ошибка CS0278 может произойти, если компилятору не удается выполнить сопоставление из-за неоднозначности. Например, шаблон "перечисление" требует, чтобы существовал метод с именем MoveNext, и ваш код может содержать два метода MoveNext. Компилятор попытается найти интерфейс для использования, но рекомендуется определить и устранить причину неоднозначности.

Пример

Следующий пример приводит к возникновению ошибки 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  
   }  
}