Derleyici Hatası CS0021
'type' türünde bir ifadeye [] ile dizin oluşturma uygulanamıyor
Dizin oluşturucuları desteklemeyen bir veri türündeki bir dizin oluşturucu aracılığıyla bir değere erişme girişiminde bulunuldu.
C++ derlemesinde dizin oluşturucu kullanmaya çalışırken CS0021 alabilirsiniz. Bu durumda, C# derleyicisinin varsayılan dizin oluşturucuyu DefaultMember
bilmesi için C++ sınıfını özniteliğiyle süsleyin. Aşağıdaki örnek CS0021 oluşturur.
Aşağıdaki C++ örneği bir .dll dosyasına derlenmiş. Hatayı oluşturmak için DefaultMember özniteliğinin açıklama satırı olduğuna dikkat edin.
// 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) {}
}
};
Aşağıdaki C# örneği .dll dosyasını çağırır. Sınıfa bir dizin oluşturucu aracılığıyla erişmeye çalışır, ancak hiçbir üye varsayılan dizin oluşturucu olarak bildirilmemiş olduğundan hata oluşturulur. Yukarıdaki örnekteki .cpp dosyasındaki satırın [DefaultMember("myItem")]
açıklamasını kaldırarak hatayı giderebilirsiniz.
// CS0021.cs
// compile with: /reference:CPP0021.dll
public class MyClass
{
public static void Main()
{
MyClassMC myMC = new MyClassMC();
int j = myMC[1]; // CS0021
}
}
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: