Leggere in inglese

Condividi tramite


Avviso del compilatore (livello 2) CS0280

'type' non implementa il modello 'pattern name'. La firma di 'method name' è errata.

Due istruzioni nel linguaggio C#, foreach e using, si basano rispettivamente su modelli predefiniti, "collection" e "resource". Questo avviso si verifica quando il compilatore non riesce ad associare una di queste istruzioni al relativo modello a causa di una firma non corretta di un metodo. Ad esempio, il modello "collection" richiede che vi sia un metodo denominato MoveNext che non accetta parametri e restituisce un boolean. Il codice può contenere un metodo MoveNext che presenta un parametro o restituisce un oggetto.

Il modello "resource" e using fornisce un altro esempio. Il modello "resource" richiede il metodo Dispose ; se si definisce una proprietà con lo stesso nome, verrà visualizzato questo avviso.

Per risolvere questo avviso, assicurarsi che le firme del metodo nel tipo corrispondano alle firme dei metodi corrispondenti nel modello e assicurarsi di non avere alcuna proprietà con lo stesso nome di un metodo necessario per il modello.

Esempio

L'esempio seguente genera l'errore CS0280.

C#
// 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  
   }  
}