我在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。
如果你想能够在一个类上做一个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>