컴파일러 오류 CS0413
형식 매개 변수 ‘type parameter’에는 클래스 형식 제약 조건이나 ‘class’ 제약 조건이 없으므로 ‘as’ 연산자와 함께 사용할 수 없습니다.
이 오류는 제네릭 형식이 as 연산자를 사용하지만 해당 제네릭 형식에 클래스 형식 제약 조건이 없는 경우에 발생합니다. as
연산자는 참조 및 nullable 값 형식에서만 허용되므로 형식 매개 변수를 제약하여 값 형식이 아니도록 해야 합니다. 이 오류를 방지하려면 클래스 형식 제약 조건 또는 참조 형식 제약 조건을 사용합니다.
이는 as
연산자가 값 형식에 사용 가능한 값이 아닌 null
을 반환할 수 있고 클래스 형식 제약 조건 또는 참조 형식 제약 조건이 아닌 경우 형식 매개 변수가 값 형식으로 처리되어야 하기 때문입니다.
예시
다음 샘플에서는 CS0413을 생성합니다.
// CS0413.cs
// compile with: /target:library
class A {}
class B : A {}
class CMain
{
A a = null;
public void G<T>()
{
a = new A();
System.Console.WriteLine (a as T); // CS0413
}
// OK
public void H<T>() where T : A
{
a = new A();
System.Console.WriteLine (a as T);
}
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기