コンパイラの警告 (レベル 2) CS0280
更新 : 2007 年 11 月
エラー メッセージ
'型' は、'パターン名' パターンを実装しません。'メャbド名' には正しくないシグネチャが含まれます。
C# の foreach および using の 2 つのステートメントでは、それぞれ "コレクション" と "リソース" という、定義済みのパターンが使用されます。この警告は、メソッドのシグネチャが間違っているために、コンパイラが、いずれかのステートメントを定義済みのパターンに対応付けることができなかった場合に発生します。たとえば、"コレクション" のパターンでは、MoveNext と呼ばれる、パラメータを受け取らずに boolean を返すメソッドが存在していることが必要です。エラーの発生したコードには、パラメータを受け取るか、オブジェクトを返す MoveNext メソッドが含まれている可能性があります。
もう 1 つの例が、"リソース" のパターンが使用される using です。"リソース" のパターンでは、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
}
}