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>