컴파일러 경고(수준 2) CS0280
'type'은 'pattern name' 패턴을 구현하지 않습니다. 'method name'에 잘못된 서명이 있습니다.
두 개의 C# 문 foreach 및 using은 미리 정의된 패턴인 "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
}
}
.NET 피드백
.NET은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.