VB6的For Each和C#.NET/VB.NET里面的foreach实现方法完全不同。
VB6里面,如果要一个集合支持For Each,它需要:
1. 实现一个ICollection接口。
Implements ICollectionPrivate Property Get ICollection_Count() As Long
End PropertyPrivate Property Get ICollection_Item(ByVal Index As Long) As Object
End PropertyPrivate Property Get ICollection_IsMemberInvalid(ByVal Object As Object) As Boolean
End Property
2. 实现一个NewEnum函数:
Public Function NewEnum() As IEnumVARIANT
End Function在.NET里,则是实现IEnumerable接口:
public interface IEnumerable {
    IEnumerator GetEnumerator();
}并且在GetEnumerator里面返回一个IEnumerator接口,用于iteration.
public interface IEnumerator {
     object Current {get;}
     bool MoveNext();
     void Reset();
}具体实现MSDN里面有例子。
}

解决方案 »

  1.   

    那也就是说那个COM接口没有只适合VB用了,不适合C#了吗?可是COM应该是一个标准化的东西啊,怎么还会这样?
      

  2.   

    可能使用开发环境导入该COM,将会自动产生转换,这样foreach就可以用了。
      

  3.   

    对啊,我把com导入到.net中,可是不能用,但在VB6中就用得好好的,不过我不用foreach,而用for还遍历就是好好的...