컴파일러 오류 CS0021
업데이트: 2007년 11월
오류 메시지
[]를 사용하는 인덱싱을 'type' 형식의 식에 적용할 수 없습니다.
Cannot apply indexing with [] to an expression of type 'type'
인덱서(C# 프로그래밍 가이드)를 지원하지 않는 데이터 형식에 인덱서를 통해 값에 액세스하려고 했습니다.
C++ 어셈블리에서 인덱서를 사용하려 하면 CS0021이 발생할 수 있습니다. 이 경우 C++ 클래스를 DefaultMember 특성으로 데코레이팅하면 C# 컴파일러에서 기본값이 되는 인덱서를 알 수 있습니다. 다음 샘플에서는 CS0021 오류가 발생하는 경우를 보여 줍니다.
예제
이 파일은 .dll 파일로 컴파일되며 오류를 생성하기 위해 DefaultMember 특성이 주석 처리됩니다.
// 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) {}
}
};
다음은 .dll 파일을 호출하는 C# 파일입니다. 이 파일은 인덱서를 통해 클래스에 액세스하려고 하지만 사용할 기본 인덱서로 선언된 멤버가 없으므로 오류가 생성됩니다.
// CS0021.cs
// compile with: /reference:CPP0021.dll
public class MyClass
{
public static void Main()
{
MyClassMC myMC = new MyClassMC();
int j = myMC[1]; // CS0021
}
}