Avviso del compilatore (livello 2) CS0280

Aggiornamento: novembre 2007

Messaggio di errore

'tipo' non implementa il modello 'nome modello'. 'nome metodo' presenta una firma errata.
'type' does not implement the 'pattern name' pattern. 'method name' has the wrong signature.

In C# le due istruzioni foreach e using si basano sui modelli predefiniti Collection e Resource. Questo avviso viene visualizzato quando il compilatore non è in grado di associare una di queste istruzioni al modello corrispondente perché la firma di un metodo è errata. Per il modello Collection è, ad esempio, necessario un metodo denominato MoveNext che non accetta parametri e che restituisce un tipo boolean. È possibile che il codice contenga un metodo MoveNext che presenta un parametro o restituisce un oggetto.

Un altro esempio viene fornito dal modello Resource e dall'istruzione using. Per il modello Resource è necessario il metodo Dispose. Se si definisce una proprietà con lo stesso nome, verrà visualizzato questo avviso.

Per correggere l'errore, accertarsi che le firme del metodo nel tipo corrispondano a quelle dei corrispondenti metodi nel modello e verificare che non esista alcuna proprietà con lo stesso nome di un metodo necessario per il modello.

Esempio

Il seguente codice di esempio genera l'avviso 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
   }
}