Ler em inglês

Partilhar via


Aviso do compilador (nível 2) CS0280

'type' não implementa o padrão 'pattern name'. 'nome do método' tem a assinatura errada.

Duas instruções em C#, foreach e using, dependem de padrões predefinidos, "collection" e "resource", respectivamente. Esse aviso ocorre quando o compilador não pode corresponder uma dessas instruções ao seu padrão devido à assinatura incorreta de um método. Por exemplo, o padrão "collection" requer que haja um método chamado MoveNext que não usa parâmetros e retorna um booleanarquivo . Seu código pode conter um MoveNext método que tem um parâmetro ou talvez retorna um objeto.

O padrão "recurso" e using fornecer outro exemplo. O padrão "recurso" requer o Dispose método, se você definir uma propriedade com o mesmo nome, receberá esse aviso.

Para resolver esse aviso, verifique se as assinaturas de método em seu tipo correspondem às assinaturas dos métodos correspondentes no padrão e se você não tem propriedades com o mesmo nome de um método exigido pelo padrão.

Exemplo

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