更新:2007 年 11 月

错误消息

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

C# 中的两个语句 foreachusing 分别依赖预定义模式“collection”和“resource”。当由于方法的签名不正确,而使编译器无法将这些语句中的一个与它的模式相匹配时,将出现此警告。例如,“collection”模式要求有一个名为 MoveNext 的方法,该方法没有参数并且返回 boolean。您的代码可以包含一个有参数或者可能返回对象的 MoveNext 方法。

“resource”模式和 using 提供另一个示例。“resource”模式需要 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
   }
}