컴파일러 오류 CS1940

업데이트: 2007년 11월

오류 메시지

소스 형식 'type'에 쿼리 패턴이 여러 번 구현되어 있습니다. 'method'에 대한 호출이 모호합니다.
Multiple implementations of the query pattern were found for source type 'type'. Ambiguous call to 'method'.

이 오류는 쿼리 메서드의 여러 구현이 정의되어 있는데 컴파일러가 쿼리에 어느 것을 사용하는 것이 가장 좋은지 명확히 할 수 없을 때 발생합니다. 다음 예제에서는 Select의 두 버전 모두 입력 매개 변수로 하나의 int를 사용하고 반환 값으로 int를 사용하기 때문에 동일한 시그니처를 가집니다.

이 오류를 해결하려면

  • 각 메서드에 하나의 구현만 제공합니다.

예제

다음 코드에서는 CS1940 오류가 발생하는 경우를 보여 줍니다.

// cs1940.cs
using System; //must include explicitly for types defined in 3.5
class Test
{
    public delegate int Dele(int x);
    int num = 0;
    public int Select(Func<int, int> d)
    {
        return d(this.num);
    }
    public int Select(Dele d) // CS1940
    {
        return d(this.num) + 1;
    }
    public static void Main()
    {
        var q = from x in new Test()
        select x;
    }
}

참고 항목

개념

표준 쿼리 연산자 개요