Compiler Warning (level 2) CS0278
'type' does not implement the 'pattern name' pattern. 'method name' is ambiguous with 'method name'.
There are several statements in C# that rely on defined patterns, such as foreach
and using
. For example, the foreach
statement relies on the collection class implementing the "enumerable" pattern.
CS0278 can occur if the compiler is unable to make the match due to ambiguities. For example, the "enumerable" pattern requires that there be a method called MoveNext
, and your code might contain two methods called MoveNext
. The compiler will attempt to find an interface to use, but it is recommended that you determine and resolve the cause of the ambiguity.
Example
The following sample generates 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
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for