Compilerwarnung (Stufe 2) CS0278
"Typ" implementiert das Muster "Mustername" nicht. "Methodenname" unterscheidet sich nicht eindeutig von "Methodenname".
Es gibt mehrere Anweisungen in C#, die auf definierten Muster aufsetzen, z. B. foreach
und using
. Beispielsweise ist die foreach
-Anweisung davon abhängig, dass die Auflistungsklasse das „enumerable“-Muster implementiert.
CS0278 kann auftreten, wenn der Compiler den Abgleich aufgrund von Mehrdeutigkeiten nicht vornehmen kann. Beispielsweise erfordert das „enumerable“-Muster, dass es eine Methode namens MoveNext
gibt, und der Code enthält möglicherweise zwei Methoden namens MoveNext
. Der Compiler versucht, die zu verwendende Schnittstelle zu finden, aber es wird empfohlen, dass Sie die Ursache für die Mehrdeutigkeit ermitteln und diese beheben.
Beispiel
Im folgenden Beispiel wird CS0278 generiert:
// 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
}
}