Błąd kompilatora CS0021
Nie można zastosować indeksowania z elementem [] do wyrażenia typu "type"
Podjęto próbę uzyskania dostępu do wartości za pośrednictwem indeksatora dla typu danych, który nie obsługuje indeksatorów.
Plik CS0021 może zostać wyświetlony podczas próby użycia indeksatora w zestawie C++. W tym przypadku udekoruj klasę języka C++ atrybutem DefaultMember
, aby kompilator języka C# wiedział, który indeksator jest domyślny. Poniższy przykład generuje plik CS0021.
Poniższy przykład języka C++ kompiluje się do pliku .dll. Należy pamiętać, że atrybut DefaultMember jest skomentowany w celu wygenerowania błędu.
// 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) {}
}
};
Poniższy przykład w języku C# wywołuje plik .dll. Próbuje uzyskać dostęp do klasy za pośrednictwem indeksatora, ale ponieważ żaden element członkowski nie został zadeklarowany jako domyślny indeksator, generowany jest błąd. Błąd można rozwiązać, usuwając komentarz z wiersza [DefaultMember("myItem")]
w pliku .cpp w poprzednim przykładzie.
// CS0021.cs
// compile with: /reference:CPP0021.dll
public class MyClass
{
public static void Main()
{
MyClassMC myMC = new MyClassMC();
int j = myMC[1]; // CS0021
}
}
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: