英語で読む

次の方法で共有


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

'type' は、'pattern name' パターンを実装しません。 'method name' には正しくないシグネチャが含まれます。

C# の 2 つのステートメント foreachusingが、定義済みのパターン "collection" および "resource" にそれぞれ依存します。 この警告は、メソッドのシグネチャが正しくないために、コンパイラがこれらのステートメントのいずれかをそのパターンに一致させることができない場合に発生します。 たとえば、"collection" パターンには、パラメーターを受け取らず、 MoveNext を返す booleanと呼ばれるメソッドがある必要があります。 パラメーターを持つか、オブジェクトを返す MoveNext メソッドがコードに含まれている可能性があります。

"resource" パターンと using は別の例を提供します。 "resource" パターンには Dispose メソッドが必要です。同じ名前のプロパティを定義した場合、この警告が表示されます。

この警告を解決するには、型のメソッド シグネチャがパターンの対応するメソッドのシグネチャと一致することを確認し、パターンに必要なメソッドと同じ名前のプロパティがないことを確認します。

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