Baca dalam bahasa Inggris

Bagikan melalui


Compiler Error CS0021

Tidak dapat menerapkan pengindeksan dengan [] ke ekspresi jenis 'jenis'

Upaya dilakukan untuk mengakses nilai melalui pengindeks pada jenis data yang tidak mendukung Pengindeks.

Anda mungkin mendapatkan CS0021 saat mencoba menggunakan pengindeks di rakitan C++. Dalam hal ini, hiasi kelas C++ dengan atribut DefaultMember sehingga kompilator C# mengetahui pengindeks mana yang merupakan default. Sampel berikut menghasilkan CS0021.

Contoh

Contoh C++ berikut ini dikompilasi ke file .dll. Perhatikan bahwa atribut DefaultMember dikomentari untuk menghasilkan kesalahan.

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

Contoh C# berikut memanggil file .dll. C# mencoba mengakses kelas melalui pengindeks, tetapi karena tidak ada anggota yang dinyatakan sebagai pengindeks default, kesalahan dihasilkan. Anda dapat mengatasi kesalahan dengan membatalkan komentar [DefaultMember("myItem")] baris dalam file .cpp dalam contoh sebelumnya.

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