2

我在 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是私有变量,现在是 aArrayList而不是前者Collection

m_coll正在填充我自己的类对象之一。如您所见,此属性属于IUnknown类型。

在这一点上我可能只是没有正确思考,但是在 C# 中是否有与这种属性等效的东西?

4

1 回答 1

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>

于 2013-04-09T20:30:13.297 回答