Číst v angličtině

Sdílet prostřednictvím


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.

Příklad

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
    }
}