我在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/