使用英语阅读

通过


编译器警告(等级 2)CS0280

“type”不实现“pattern name”模式。 “method name”具有错误的签名。

C# 中的两个语句 foreachusing分别依赖于预定义模式“集合”和“资源”。 当编译器由于方法的签名不正确,而无法将这两个语句中的某个语句与其模式匹配时,会出现此警告。 例如,“集合”模式要求存在一个不采用任何参数并返回 MoveNext 的名为 boolean的方法。 你的代码可能包含具有参数或可能返回对象的 MoveNext 方法。

“资源”模式和 using 是另一个示例。 “资源”模式需要 Dispose 方法;如果定义了同名属性,则你会收到此警告。

要解决此警告,请确保类型中的方法签名与模式中对应方法的签名匹配,并确保你没有与模式所需方法同名的属性。

示例

下面的示例生成 CS0280。

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