4

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

一切都很好,除了不起作用的索引属性。
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(..)

这是一个错误吗?有解决办法吗?为什么会发生这种情况?

4

2 回答 2

3

C# 不支持除属性之外的索引属性this

但是 .NET 框架确实如此,因此当以支持该语言的语言创建索引属性时,它将在 C# 中显示为一get_Method和一。set_Method

于 2013-03-12T10:29:58.710 回答
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;
        }
    }
};
于 2013-03-12T14:40:44.760 回答