Freigeben über


Compilerwarnung (Stufe 2) CS0280

"Typ" implementiert das Muster "Mustername" nicht. "Methodenname" weist die falsche Signatur auf.

Die beiden C#-Anweisungen foreach und usingbasieren auf den vordefinierten Mustern "Auflistung" und "Ressource". Diese Warnung tritt auf, wenn der Compiler eine dieser Anweisungen aufgrund einer falschen Methodensignatur nicht ihrem Muster zuordnen kann. Das Muster "Auflistung" erfordert z. B. eine Methode namens MoveNext , die keine Parameter akzeptiert und einen boolean-Wert zurückgibt. Der Code kann eine MoveNext -Methode enthalten, die über einen Parameter verfügt oder ggf. 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 den Fehler zu beheben, stellen Sie sicher, dass die Methodensignaturen Ihres Typs mit den Signaturen der entsprechenden Methoden im Muster übereinstimmen. Außerdem dürfen keine Eigenschaften mit dem gleichen Namen wie eine Methode vorhanden sein, die vom Muster benötigt wird.

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