Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
Beispiel
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
}
}