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


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

Обновлен: Ноябрь 2007

Сообщение об ошибке

'имя типа' не реализует шаблон 'имя шаблона'. 'имя метода' либо статический, либо не открытый.
'type name' does not implement the 'pattern name' pattern. 'method name' is either static or not public.

В C# имеются несколько операторов, таких как foreach и using, основанных на предварительно определенных шаблонах. Например, оператор foreach основывается на классе коллекции, реализующем шаблон "enumerable". Эта ошибка происходит в том случае, если компилятор не может выполнить сравнение, поскольку объявляемый метод является static или не является public. Методы в шаблонах должны быть экземплярами классов и должны быть открытыми.

Пример

Следующий пример кода приводит к возникновению ошибки CS0279.

// CS0279.cs

using System;
using System.Collections;

public class myTest : IEnumerable
{
    IEnumerator IEnumerable.GetEnumerator()
    {
        yield return 0;
    }

    internal IEnumerator GetEnumerator()
    {
        yield return 0;
    }

    public static void Main()
    {
        foreach (int i in new myTest()) {}  // CS0279
    }
}