コンパイラの警告 (レベル 2) CS0279Compiler Warning (level 2) CS0279

'type name' は 'pattern name' パターンを実装しません。'type name' does not implement the 'pattern name' pattern. 'method name' が静的であるか、パブリックではありません。'method name' is either static or not public.

C# には、 foreachusingなど、あらかじめ定義されたパターンを使用するステートメントがいくつかあります。There are several statements in C# that rely on defined patterns, such as foreach and using. たとえば、 foreach には、列挙可能なパターンを実装したコレクション クラスが使用されます。For example, foreach relies on the collection class implementing the enumerable pattern. このエラーは、 static として宣言されているか publicでないとして宣言されているメソッドが原因で、コンパイラが照合を処理できないときに発生します。This error occurs when the compiler is unable to make the match due to a method being declared static or not public. パターン内のメソッドは、クラスのインスタンスであり、パブリックであることが必要です。Methods in patterns are required to be instances of classes, and to be public.

Example

次の例では、CS0279 が生成されます。The following example generates 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  
    }  
}