Share via


컴파일러 경고(수준 2) CS0280

업데이트: 2007년 11월

오류 메시지

'type'은(는) 'pattern name' 패턴을 구현하지 않습니다. 'method name'에 잘못된 시그니처가 있습니다.
'type' does not implement the 'pattern name' pattern. 'method name' has the wrong signature.

C#에서 두 개의 문 foreachusing은 각각 미리 정의된 패턴인 "collection"과 "resource"를 사용합니다. 이 경고는 메서드의 시그니처가 잘못되어 컴파일러에서 이러한 문 중 하나를 해당 패턴에 일치시킬 수 없는 경우에 발생합니다. "collection" 패턴에는 매개 변수를 받지 않고 boolean을 반환하는 MoveNext라는 메서드가 필요하지만 사용자의 코드에는 매개 변수를 받거나 개체를 반환하는 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
   }
}