VB6 в C#: I Неизвестно

У меня есть свойство в 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 ответ

Решение

Если вы хотите иметь возможность выполнять foreach над классом (как вы могли бы, выставив NewEnum() как IUnknown в vb6), вы можете сделать так, чтобы ваш класс реализовывал 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>

Другие вопросы по тегам