영어로 읽기

다음을 통해 공유


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

'type'은 'pattern name' 패턴을 구현하지 않습니다. 'method name'에 잘못된 서명이 있습니다.

두 개의 C# 문 foreachusing은 미리 정의된 패턴인 "collection"과 "resource"를 각각 사용합니다. 이 경고는 컴파일러가 메서드의 잘못된 서명 때문에 이러한 문 중 하나를 해당 패턴에 일치시킬 수 없는 경우에 발생합니다. 예를 들어 "collection" 패턴에서는 매개 변수를 사용하지 않고 MoveNext 을 반환하는 boolean라는 메서드가 있어야 합니다. 매개 변수가 있거나 개체를 반환하는 MoveNext 메서드가 코드에 포함될 수 있습니다.

"resource" 패턴 및 using 는 또 다른 예를 제공합니다. "resource" 패턴에서는 Dispose 메서드가 필요합니다. 동일한 이름의 속성을 정의하면 이 경고가 발생합니다.

이 경고를 해결하려면 형식의 메서드 서명이 패턴에서 해당 메서드의 서명과 일치하고, 패턴에 필요한 메서드와 동일한 이름을 가진 속성이 없는지 확인합니다.

예시

다음 샘플에서는 CS0280을 생성합니다.

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