Compilerfehler CS0021

Aktualisiert: November 2007

Fehlermeldung

Indizierung mit [] kann nicht auf einen Ausdruck vom Typ "Typ" angewendet werden.
Cannot apply indexing with [] to an expression of type 'type'

Es wurde versucht, über einen Indexer eines Datentyps auf einen Wert zuzugreifen, der Indexer (C#-Programmierhandbuch) nicht unterstützt.

Beim Versuch, einen Indexer in einer C++-Assembly zu verwenden, erhalten Sie möglicherweise den Fehler CS0021. Ergänzen Sie in diesem Fall die C++-Klasse um das DefaultMember-Attribut, damit der C#-Compiler den Standardindexer erkennen kann. Im folgenden Beispiel wird CS0021 generiert:

Diese Datei wird zu einer DLL-Datei kompiliert, in der das DefaultMember-Attribut auskommentiert ist, um den Fehler zu generieren.

// 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) {}
        }
};

In der folgenden C#-Datei wird die DLL-Datei aufgerufen. Diese Datei versucht, über einen Indexer auf die Klasse zuzugreifen. Da aber kein Member als Standardindexer deklariert wurde, wird dieser Fehler generiert.

// CS0021.cs
// compile with: /reference:CPP0021.dll
public class MyClass
{
    public static void Main()
    {
        MyClassMC myMC = new MyClassMC();
        int j = myMC[1]; // CS0021
    }
}

Community-Beiträge

Anzeigen: