CS0021 de erro do compilador
Mensagem de erro
Não é possível aplicar indexação com [] a uma expressão do tipo 'tipo'
Foi feita uma tentativa para acesso um valor por meio de um indexador em um tipo de dados que não oferece suporte a Indexadores (guia de programação C#).
Você pode obter CS0021 ao tentar usar um indexador em um assembly C++.Nesse caso, decore a classe do C++ com o DefaultMember atributo para que o compilador translation from VPE for Csharp saiba qual indexador é o padrão. O exemplo a seguir gera CS0021.
Exemplo
Este arquivo é compilado em um arquivo .dll — com o DefaultMember atributo comentada — para gerar o erro.
// 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) {}
}
};
Este é o arquivo translation from VPE for Csharp que chama o arquivo .dll do.Este arquivo tenta acessar a classe por meio de um indexador, mas porque nenhum membro foi declarado sistema autônomo o indexador padrão a ser usado, o erro é gerado.
// CS0021.cs
// compile with: /reference:CPP0021.dll
public class MyClass
{
public static void Main()
{
MyClassMC myMC = new MyClassMC();
int j = myMC[1]; // CS0021
}
}