我在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#中是否存在相当于这种属性?
答案 0 :(得分: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>