更新 : 2007 年 11 月
エラー メッセージ
'型' は、'パターン名' パターンを実装しません。'メソッド名' があいまいなため、'メソッド名' と混同します。
C# には、foreach や using など、あらかじめ定義されたパターンを使用するステートメントがいくつかあります。たとえば、foreach では、"列挙可能な" パターンを実装したコレクション クラスが使用されます。
CS0278 は、あいまいな部分があるために、コンパイラが適切な仲介処理を実行できない場合に発生する可能性があります。たとえば、"列挙可能な" パターンを処理するためには、MoveNext というメソッドが必要です。コンパイルの対象となるコードには、MoveNext メソッドが 2 つ存在している可能性があります。どちらのインターフェイスを使うべきか、コンパイラが検索を試みるためです。ただし、あいまいさの原因を突き止め、解決することをお勧めします。
詳細については、「方法 : foreach を使用してコレクション クラスにアクセスする (C# プログラミング ガイド)」を参照してください。
使用例
次の例では、CS0278 エラーが生成されます。
// CS0278.cs
using System.Collections.Generic;
public class myTest
{
public static void TestForeach<W>(W w)
where W: IEnumerable<int>, IEnumerable<string>
{
foreach (int i in w) {} // CS0278
}
}