Freigeben über


Compilerwarnung (Stufe 2) CS0280

Aktualisiert: November 2007

Fehlermeldung

"Typ" implementiert nicht das Muster "Mustername". "Methodenname" weist die falsche Signatur auf.
'type' does not implement the 'pattern name' pattern. 'method name' has the wrong signature.

Zwei Anweisungen in C#, die foreach-Anweisung und die using-Anweisung, erfordern die vordefinierten Muster "Auflistung" bzw. "Ressource". Diese Warnung tritt auf, wenn der Compiler eine dieser Anweisungen nicht ihrem Muster zuordnen kann, weil eine Methode eine falsche Signatur aufweist. Das Muster "Auflistung" erfordert z. B. das Vorhandensein der MoveNext-Methode, die keine Parameter annimmt und einen boolean-Wert zurückgibt. Ihr Code kann z. B. eine MoveNext-Methode enthalten, die über einen Parameter verfügt oder ein Objekt zurückgibt.

Das Muster "Ressource" und using liefern ein weiteres Beispiel. Das Muster "Ressource" erfordert die Dispose-Methode. Wenn Sie eine gleichnamige Eigenschaft definieren, erhalten Sie diese Warnung.

Um diesen Fehler zu beheben, stellen Sie sicher, dass die Methodensignaturen imTyp mit den Signaturen der entsprechenden Methoden im Muster übereinstimmen. Stellen Sie weiterhin sicher, dass keine Eigenschaften vorhanden sind, die denselben Namen wie eine vom Muster geforderte Methode haben.

Beispiel

Im folgenden Beispiel wird CS0280 generiert.

// 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
   }
}