更新:2007 年 11 月
错误消息
无法将带 [] 的索引应用于“type”类型的表达式试图通过索引器访问不支持
当您试图在 C++ 程序集中使用索引器时,可能会遇到 CS0021。在这种情况下,请用 DefaultMember 属性修饰 C++ 类,以使 C# 编译器知道哪个索引器是默认的。下面的示例生成 CS0021。
示例
此文件编译成一个 .dll 文件(DefaultMember 属性被注释掉)以生成此错误。
复制代码 | |
---|---|
// 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) {} } }; |
下面是调用此 .dll 文件的 C# 文件。此文件试图通过索引器访问该类,但由于没有成员被声明为要使用的默认索引器,所以生成错误。
复制代码 | |
---|---|
// CS0021.cs // compile with: /reference:CPP0021.dll public class MyClass { public static void Main() { MyClassMC myMC = new MyClassMC(); int j = myMC[1]; // CS0021 } } |