Errore del compilatore CS0021
Impossibile applicare l'indicizzazione con [] a un'espressione di tipo 'type'
Si è provato ad accedere a un valore tramite l'applicazione di un indicizzatore a un tipo di dati che non supporta Indexers.
L'errore CS0021 può essere generato se si prova a usare 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. L'esempio seguente genera l'errore CS0021.
L'esempio C++ seguente viene compilato in un file .dll. Si noti che l'attributo DefaultMember è impostato come commento per 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) {}
}
};
Nell'esempio C# seguente viene chiamato il file .dll. Quest’ultimo prova a accedere alla classe con un indicizzatore, ma dal momento che nessun membro è stato dichiarato come l'indicizzatore predefinito, viene generato l'errore. È possibile risolvere l'errore annullando il commento della riga [DefaultMember("myItem")]
nel file .cpp nell'esempio precedente.
// CS0021.cs
// compile with: /reference:CPP0021.dll
public class MyClass
{
public static void Main()
{
MyClassMC myMC = new MyClassMC();
int j = myMC[1]; // CS0021
}
}
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback: