如何从这个c#代码实现IEnumerable <int>?</int>

时间:2009-09-24 03:55:10

标签: c++-cli

我正在尝试将此c#代码转换为c ++ / cli代码:

class MyRange : IEnumerable<int>
{
    public IEnumerator<int> GetEnumerator() { return null; }

    IEnumerator IEnumerable.GetEnumerator() { return null; }
}

这是我的尝试:

namespace Tests {
    public ref class MyRange : System::Collections::Generic::IEnumerable<int> {
    private:
        virtual System::Collections::IEnumerator^ GetEnumerator() = System::Collections::IEnumerable::GetEnumerator {
            return nullptr;
        }

        virtual System::Collections::Generic::IEnumerable<int>^ GetEnumerator() {
            return nullptr;
        }
    };
}

它给了我很多错误(比如20),我甚至认为把它们放在这里是不值得的。

我已经用Google搜索了所有内容,似乎很多人都遇到了和我一样的问题。

2 个答案:

答案 0 :(得分:4)

好的,经过大量的战斗后发现了一些正常的代码:

namespace Tests {
    ref class MyCollection : public Generic::IEnumerable<int>
    {
    public:
        virtual System::Collections::IEnumerator^ GetEnumeratorNonGeneric() = System::Collections::IEnumerable::GetEnumerator
        {
            return GetEnumerator();
        }

        virtual Generic::IEnumerator<int>^ MyCollection::GetEnumerator()
        {
            return nullptr;
        }
    };
}

答案 1 :(得分:2)

使用Managed C ++作为目标语言在Reflector中反汇编C#通常很有帮助,然后从那里转换到C ++ / CLI。