Avviso del compilatore (livello 2) CS0279

Aggiornamento: novembre 2007

Messaggio di errore

'nome tipo' non implementa il modello 'nome modello'. 'nome metodo' è static o non public.
'type name' does not implement the 'pattern name' pattern. 'method name' is either static or not public.

In C# alcune istruzioni, quali foreach e using, si basano su modelli definiti. Ad esempio, foreach si basa sulla classe di insiemi che implementa il modello enumerabile. Questo errore si verifica quando il compilatore non è grado di creare una corrispondenza tra gli elementi a causa di un metodo dichiarato static o non public. I metodi inclusi in modelli devono essere istanze di classi, nonché di tipo public.

Esempio

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