컴파일러 오류 CS1942

업데이트: 2007년 11월

오류 메시지

'clause' 절에 있는 식의 형식이 올바르지 않습니다. 'method'에 대한 호출에서 형식 유추가 실패했습니다.
The type of the expression in the 'clause' clause is incorrect. Type inference failed in the call to 'method'.

일반적으로 이 오류는 범위 변수에 잘못된 명시적 형식이 지정된 경우 발생합니다.

이 오류를 해결하려면

  • 범위 변수가 명시적으로 형식화된 경우 형식이 반복하는 컬렉션의 요소 형식과 같은지 아니면 해당 형식에서 암시적으로 변환할 수 있는지를 확인합니다. 범위 변수 앞에 var 키워드를 사용하면 var가 제거됩니다.

예제

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

// cs1942.cs
class Program
    {
        static void Main(string[] args)
        {
            var x = from var i in Enumerable.Range(1, 100) // CS1949
                    select i; //CS1942
        }
    }

var가 형식이 아니기 때문에 범위 변수와 함께 var를 사용하면 내부 Cast<T> 작업이 실패한다는 점에서 CS1942 오류가 CS1949 오류와 관련이 있습니다.

참고 항목

개념

LINQ 쿼리 식(C# 프로그래밍 가이드)

참조

var(C# 참조)