我在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#中是否有等同于这种属性的东西?

最佳答案

如果您希望能够在类上进行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>

关于c# - VB6至C#:IUnknown,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15911434/

10-09 01:59