컴파일러 오류 CS0021
[]를 사용하는 인덱싱을 'type' 형식의 식에 적용할 수 없습니다.
Indexers를 지원하지 않는 데이터 형식의 인덱서를 통해 값에 액세스하려고 했습니다.
C++ 어셈블리에서 인덱서를 사용하려고 하면 CS0021이 발생할 수 있습니다. 이 경우 DefaultMember
특성으로 C++ 클래스를 데코레이팅하여 C# 컴파일러에서 기본 인덱서를 알 수 있도록 합니다. 다음 샘플에서는 CS0021을 생성합니다.
다음 C++ 예는 .dll 파일로 컴파일됩니다. 오류를 생성하기 위해 DefaultMember 특성이 주석 처리되어 있습니다.
C++
// CPP0021.cpp
// compile with: /clr /LD
using namespace System::Reflection;
// Uncomment the following line to resolve
//[DefaultMember("myItem")]
public ref class MyClassMC
{
public:
property int myItem[int]
{
int get(int i){ return 5; }
void set(int i, int value) {}
}
};
다음 C# 예에서는 .dll 파일을 호출합니다. 인덱서를 통해 클래스에 액세스하려고 시도하지만 기본 인덱서로 선언된 멤버가 없기 때문에 오류가 발생합니다. 이전 예의 .cpp 파일에서 [DefaultMember("myItem")]
줄의 주석 처리를 제거하여 오류를 해결할 수 있습니다.
C#
// CS0021.cs
// compile with: /reference:CPP0021.dll
public class MyClass
{
public static void Main()
{
MyClassMC myMC = new MyClassMC();
int j = myMC[1]; // CS0021
}
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET 피드백
.NET은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.