VB6到C#:IUnknown

时间:2013-04-09 20:02:54

标签: c# properties vb6 vb6-migration iunknown

我在VB6中有一个属性,我试图转换为C#。它如下:

Public Property Get NewEnum() As IUnknown
    'this property allows you to enumerate
    'this collection with the For...Each syntax
    Set NewEnum = m_coll.[_NewEnum]
End Property

m_coll是私有变量,现在是ArrayList而不是前Collection

m_coll正在填充我自己的一个类对象。您可以看到此属性属于 IUnknown 类型。

我可能在这一点上没有正确思考,但在C#中是否存在相当于这种属性?

1 个答案:

答案 0 :(得分:2)

如果你想能够在一个类上做一个foreach(就像你可以通过在Vb6中将NewEnum()暴露为IUnknown那样)你可以让你的类实现IEnumerable - 例如:

   public class MyClass : IEnumerable 
    {
        private List<string> items = new List<string>();

        public MyClass()
        {
            items.Add("first");
            items.Add("second");
        }


        public IEnumerator GetEnumerator()
        {
            return items.GetEnumerator();
        }
    }

允许你像这样使用它:

  MyClass myClass =new MyClass();
            foreach (var itm in myClass)
            {
                Console.WriteLine(itm);
            }

为简单起见,我使用了List<string>,但您可以使用List<yourCustomClass>