Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Messaggio di errore
Impossibile applicare l'indicizzazione con [] a un'espressione di tipo 'tipo'.
Cannot apply indexing with [] to an expression of type 'type'
È stato effettuato un tentativo di accesso a un valore tramite l'applicazione di un indicizzatore a un tipo di dati che non supporta Indicizzatori (Guida per programmatori C#).
L'errore CS0021 può essere generato se si tenta di utilizzare un indicizzatore in un assembly C++. In questo caso, contrassegnare la classe C++ con l'attributo DefaultMember per indicare al compilatore C# l'indicizzatore predefinito. Il codice di esempio riportato di seguito genera l'errore CS0021
Esempio
Il seguente file viene compilato in un file DLL, con l'attributo DefaultMember impostato come commento, in modo da generare l'errore.
// 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) {}
}
};
Il seguente file C# esegue la chiamata del file DLL. Questo file tenta di accedere alla classe mediante un indicizzatore, ma poiché nessun membro è stato dichiarato come l'indicizzatore predefinito da utilizzare, viene generato l'errore.
// CS0021.cs
// compile with: /reference:CPP0021.dll
public class MyClass
{
public static void Main()
{
MyClassMC myMC = new MyClassMC();
int j = myMC[1]; // CS0021
}
}