英語で読む

次の方法で共有


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

'type name' は 'pattern name' パターンを実装しません。 'method name' が静的であるか、パブリックではありません。

C# には、 foreachusingなど、あらかじめ定義されたパターンを使用するステートメントがいくつかあります。 たとえば、 foreach には、列挙可能なパターンを実装したコレクション クラスが使用されます。 このエラーは、 static として宣言されているか publicでないとして宣言されているメソッドが原因で、コンパイラが照合を処理できないときに発生します。 パターン内のメソッドは、クラスのインスタンスであり、パブリックであることが必要です。

次の例では、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  
    }  
}