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

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


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

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

Два оператора C#, foreach и using, используют предварительно определенные шаблоны collection и resource соответственно. Это предупреждение возникает, если компилятор не может соотнести какой-либо из этих операторов с его шаблоном из-за неправильной сигнатуры метода. Например, для шаблона collection требуется наличие метода MoveNext , который не имеет параметров и возвращает boolean. Ваш код может содержать метод MoveNext , который имеет параметр или может возвращать объект.

Другой пример — шаблон resource и using . Для шаблона resource требуется метод Dispose ; если вы определили свойство с тем же именем, вы получите это предупреждение.

Чтобы устранить это предупреждение, убедитесь, что сигнатуры метода в типе совпадают с сигнатурами соответствующих методов в шаблоне, а также убедитесь, что у вас нет свойств с тем же именем, что и у метода, требуемого шаблоном.

Пример

В следующем примере возникает ошибка CS0280.

// CS0280.cs  
using System;  
using System.Collections;  
  
public class ValidBase: IEnumerable  
{  
   IEnumerator IEnumerable.GetEnumerator()  
   {  
      yield return 0;  
   }  
  
   internal IEnumerator GetEnumerator()  
   {  
      yield return 0;  
   }  
}  
  
class Derived : ValidBase  
{  
   // field, not method  
   new public int GetEnumerator;  
}  
  
public class Test  
{  
   public static void Main()  
   {  
      foreach (int i in new Derived()) {}   // CS0280  
   }  
}