Chyba kompilátoru CS0021
Indexování s [] nelze použít u výrazu typu type 'type'.
Došlo k pokusu o přístup k hodnotě prostřednictvím indexeru datového typu, který nepodporuje indexery.
Při pokusu o použití indexeru v sestavení C++ se může zobrazit cs0021. V tomto případě ozdobte třídu C++ atributem DefaultMember
, aby kompilátor jazyka C# věděl, který indexer je výchozí. Následující ukázka vygeneruje CS0021.
Následující příklad jazyka C++ se zkompiluje do souboru .dll. Všimněte si, že atribut DefaultMember je okomentován, aby se vygenerovala chyba.
// 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) {}
}
};
Následující příklad jazyka C# volá soubor .dll. Pokouší se získat přístup ke třídě prostřednictvím indexeru, ale protože žádný člen nebyl deklarován jako výchozí indexer, vygeneruje se chyba. Chybu můžete vyřešit zrušením komentáře řádku [DefaultMember("myItem")]
v souboru .cpp v předchozím příkladu.
// CS0021.cs
// compile with: /reference:CPP0021.dll
public class MyClass
{
public static void Main()
{
MyClassMC myMC = new MyClassMC();
int j = myMC[1]; // CS0021
}
}
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby: