有两个项目,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(..)
这是一个错误吗?有解决方案来解决这个问题吗?为什么会发生这种情况?
答案 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;
}
}
};