为什么C ++ CLI索引属性在C#中不起作用?

时间:2013-03-12 10:23:58

标签: c# c++ .net visual-c++ c++-cli

有两个项目,One C ++ CLI和另一个C#项目 C#CLI程序集在C#项目中引用。

一切都很好,除了索引属性不起作用 C ++ CLI代码:

property Nullable< int> PVarInt[System::String^] {
    Nullable<int> get(System::String^ inx){
    }
    void set(System::String^ inx, Nullable< int>  newx){
    }
}

C#中的代码显示为两个set和get方法如下:

get_PVarInt(..)
set_PVarInt(..)

这是一个错误吗?有解决方案来解决这个问题吗?为什么会发生这种情况?

2 个答案:

答案 0 :(得分:3)

除了this属性外,C#不支持索引属性。

然而.NET框架确实如此,所以当用支持它的语言创建索引属性时,它将在C#中显示为一个get_Method和一个set_Method

答案 1 :(得分:2)

C ++ / CLI具有可从C#获得的索引属性: 例如:

public ref class ClassWithIndexer
{
private:
    array<int> ^x;
public:
    property int default[int]
    {
        int get(int index)
        {
            return x[index];
        }
        void set(int index, int value)
        {
            x[index] = value;
        }
    }
};