식 트리에서 허용되지 않는 식으로 인해 생성된 오류 및 경고 해결
이 문서에서는 다음과 같은 컴파일러 오류를 다룹니다.
- CS0765 - 정의 선언만 있거나 제거된 조건부 메서드만 있는 부분 메서드는 식 트리에서 사용할 수 없습니다.
- CS0831 - 식 트리에는 기본 액세스 권한을 사용할 수 없습니다.
- CS0832 - 식 트리에는 대입 연산자를 사용할 수 없습니다.
- CS0834 - 문 본문이 있는 람다 식은 식 트리로 변환할 수 없습니다.
- CS0835 - 람다 식을 형식 인수 'type'이 대리자 형식이 아닌 식 트리로 변환할 수 없습니다.
- CS0838 - 식 트리에는 다차원 배열 이니셜라이저를 사용할 수 없습니다.
- CS0845 - 람다 식 트리에는 왼쪽에 null 또는 기본 리터럴이 있는 병합 연산자를 사용할 수 없습니다.
- CS0853 - 식 트리에는 명명된 인수 사양을 사용할 수 없습니다.
- CS0854 - 식 트리에는 선택적 인수를 사용하는 호출을 포함할 수 없습니다.
- CS0855 - 식 트리에는 인덱싱된 속성을 사용할 수 없습니다.
- CS1944 - 식 트리에는 안전하지 않은 포인터 연산을 사용할 수 없습니다.
- CS1945 - 식 트리에는 무명 메서드 식을 사용할 수 없습니다.
- CS1946 - 무명 메서드 식은 식 트리로 변환할 수 없습니다.
- CS1951 - 람다 식 트리에는
ref
,in
또는out
매개 변수를 사용할 수 없습니다. - CS1952 - 람다 식 트리에는 가변 인수가 있는 메서드를 사용할 수 없습니다.
- CS1963 - 식 트리에는 동적 연산을 포함할 수 없습니다.
- CS1989 - 비동기 람다 식은 식 트리로 변환할 수 없습니다.
- CS2037 - 람다 식 트리에는 인수에서 참조가 생략된 COM 호출을 포함할 수 없습니다.
- CS7053 - 식 트리에는 "feature"를 포함할 수 없습니다.
- CS8072 - 람다 식 트리에는 null 전파 연산자를 포함할 수 없습니다.
- CS8074 - 람다 식 트리에는 사전 이니셜라이저를 포함할 수 없습니다.
- CS8075 - 람다 식의 컬렉션 이니셜라이저에는 확장
Add
메서드가 지원되지 않습니다. - CS8110 - 식 트리에는 로컬 함수에 대한 참조를 포함할 수 없습니다.
- CS8122 - 식 트리에는 '
is
' 패턴 일치 연산자를 사용할 수 없습니다. - CS8143 - 식 트리에는 튜플 리터럴을 사용할 수 없습니다.
- CS8144 - 식 트리에는 튜플 변환을 사용할 수 없습니다.
- CS8153 - 람다 식 트리에는 참조로 반환되는 메서드, 속성 또는 인덱서에 대한 호출을 사용할 수 없습니다.
- CS8155 - 참조로 반환되는 람다 식은 식 트리로 변환할 수 없습니다.
- CS8188 - 식 트리에는 throw 식을 포함할 수 없습니다.
- CS8198 - 식 트리에는 out 인수 변수 선언을 사용할 수 없습니다.
- CS8207 - 식 트리에는 취소를 포함할 수 없습니다.
- CS8382 - 식 트리에는 튜플
==
또는!=
연산자를 사용할 수 없습니다. - CS8514 - 식 트리에는 switch 식을 포함할 수 없습니다.
- CS8640 - 식 트리에는 ref struct 또는 제한된 형식의 값을 포함할 수 없습니다.
- CS8642 - 식 트리에는 null 병합 할당을 포함할 수 없습니다.
- CS8790 - 식 트리에는 패턴 System.Index 또는 System.Range 인덱서 액세스 권한을 포함할 수 없습니다.
- CS8791 - 식 트리에는 from-end 인덱스('
^
') 식을 포함할 수 없습니다. - CS8792 - 식 트리에는 범위('
..
') 식을 포함할 수 없습니다. - CS8810 - 식 트리에는 메서드 그룹의 '
&
'을(를) 사용할 수 없습니다. - CS8849 - 식 트리에는
with
식을 포함할 수 없습니다. - CS8927 - 식 트리에는 정적 가상 또는 추상 인터페이스 멤버의 액세스 권한을 포함할 수 없습니다.
- CS8952 - 식 트리에는 보간된 문자열 처리기 변환을 포함할 수 없습니다.
- CS8972 - 특성이 있는 람다 식은 식 트리로 변환할 수 없습니다.
- CS9170 - 식 트리에는 인라인 배열 액세스 또는 변환을 포함할 수 없습니다.
- CS9175 - 식 트리에는 컬렉션 식을 포함할 수 없습니다.
식 트리 제한 사항
위 목록의 모든 오류는 식 트리에서 허용되지 않는 C# 식 형식을 사용했음을 나타냅니다. 대부분의 경우 허용되지 않는 식은 C# 3.0 이상에 도입된 구문을 나타냅니다. 이러한 식은 식 트리를 구문 분석하는 모든 라이브러리에서 호환성이 손상되는 변경을 일으킬 수 있으므로 금지됩니다. 새 구문이 허용된 경우 새 C# 식을 구문 분석하도록 모든 라이브러리를 개선해야 합니다.
다음 식은 허용되지 않습니다.
- 구현 선언이 없는 부분 메서드 호출.
- 제거된 조건부 메서드 호출.
- 로컬 함수 호출.
async
람다 식은 허용되지 않습니다.base
액세스를 사용하여 기본 클래스에 선언된 가상 메서드 직접 호출.- 할당 작업.
- 문 람다는 허용되지 않습니다.
- 다차원 배열 이니셜라이저. 대신 식 트리 외부에서 다차원 배열을 만들고 초기화해야 합니다.
dynamic
작업은 허용되지 않습니다.- 패턴 일치 식은 허용되지 않습니다.
- 튜플 리터럴 및 같음 비교와 같은 많은 튜플 작업은 허용되지 않습니다.
throw
식은 허용되지 않습니다.- 무시 항목(
_
) 선언. - 인덱스 및 범위 연산자는 허용되지 않습니다.
with
식을 사용하는 비 파괴적 변형은 허용되지 않습니다.- 인라인 배열을 선언하거나 액세스할 수 없습니다.
- 컬렉션 식을 포함할 수 없습니다.
- null 전파 및 null 병합 연산자는 허용되지 않습니다.
ref struct
형식(예: System.Span<T>, System.ReadOnlySpan<T>)은 허용되지 않습니다.out
변수 선언을 비롯한in
,out
, 및ref
매개 변수는 허용되지 않습니다.ref
반환은 허용되지 않습니다.ref
에서 반환하는 메서드에 대한 호출은 허용되지 않습니다.- 정적 추상 인터페이스 멤버에는 액세스할 수 없습니다.
- 인라인 배열.
기타 제한 사항은 다음과 같습니다.
- 특성은 람다 식, 해당 매개 변수 또는 반환에 적용할 수 없습니다.
- 람다 식은 형식 매개 변수가 대리자 형식인 형식에서 System.Linq.Expressions.Expression에서 파생된 형식으로 변환할 수 있어야 합니다.
- 명명된 매개 변수와 선택적 매개 변수는 제한됩니다. 식은 명명된 인수를 지정하는 메서드를 호출할 수 없고, 선택적 매개 변수의 기본값을 사용할 수 없습니다.
- 사전 이니셜라이저는 허용되지 않습니다. 확장
Add
메서드도 허용되지 않습니다. - 대상 식은 람다 식이어야 합니다. 상수 및 변수는 허용되지 않지만, 상수 또는 변수를 반환하는 람다 식은 허용됩니다.
- 안전하지 않은 포인터 작업은 허용되지 않습니다.
- COM 호출은 인수에
ref
을(를) 포함해야 하며, 암시할 수 없습니다. - 지원되지 않는
__arglist
키워드는 허용되지 않습니다.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기