aviso do compilador (nível 2) CS0279

Mensagem de erro

nome de tipo não implementa o padrão de nome do padrão. 'nome do método ' é estático ou não pública.

Há várias instruções em translation from VPE for Csharp que se baseiam em padrões definidos, such sistema autônomo foreach e using. Por exemplo, foreach utiliza a classe de coleção Implementando o padrão enumerável. Este erro ocorre quando o compilador não pode fazer a correspondência devido a um método que está sendo declarado static ou não public. Métodos em padrões são necessários para instâncias de classes e ser pública.

Exemplo

O exemplo a seguir gera 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
    }
}