编译器警告(等级 2)CS0280
“type”不实现“pattern name”模式。 “method name”具有错误的签名。
C# 中的两个语句 foreach 和 using分别依赖于预定义模式“集合”和“资源”。 当编译器由于方法的签名不正确,而无法将这两个语句中的某个语句与其模式匹配时,会出现此警告。 例如,“集合”模式要求存在一个不采用任何参数并返回 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
}
}