英語で読む

次の方法で共有


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

'type' は、'pattern name' パターンを実装しません。 'method name' があいまいなため、'method name' と混同します。

C# には、 foreachusingなど、あらかじめ定義されたパターンを使用するステートメントがいくつかあります。 たとえば、 foreach ステートメントは、"列挙可能" なパターンを実装したコレクション クラスに依存します。

CS0278 は、あいまいな部分があるために、コンパイラが適切な仲介処理を実行できない場合に発生する可能性があります。 たとえば、"列挙可能な" パターンを処理するためには、 MoveNextというメソッドが必要ですが、コンパイルの対象になるコードには、 MoveNextメソッドが 2 つ存在している可能性があります。 コンパイラは、どちらのインターフェイスを使用するかについて検索を試行しますが、あいまいさの原因を突き止め、解決することをお勧めします。

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