对于每个循环,可以从集合中获取对象的副本

时间:2015-10-13 11:25:21

标签: vb.net ms-project

我正在尝试创建集合的副本,然后删除原始集合。 我使用For Each循环迭代原始集合,然后将对象添加到新集合中。 但是一旦我从原始集合中删除对象,我就无法使用新创建的集合。 新创建的集合中的对象计数是正确的

rMSPCalendar.Exceptions是MSProject为每个日历提供的集合 在此代码之后,如果遍历rMSPCalendarExceptions,我会收到错误“Object required”

Dim rMSPCalendarExceptions As New Collection
Dim exception As Object
rMSPCalendar.Exceptions(1).
For Each exception In rMSPCalendar.Exceptions
   rMSPCalendarExceptions.Add exception
   exception.Delete
Next exception

1 个答案:

答案 0 :(得分:0)

不是使用通用Collection对象而只使用Exception的名称(例如默认属性)填充它,而是使用类型为MSProject.Exception的List:

Dim Exceptions As New List(Of MSProject.Exception)
For Each Ex As MSProject.Exception In rMSPCalendar.Exceptions
    Exceptions.Add(Ex)
    Ex.Delete()
Next
For Each Ex In Exceptions
    ' do something with the exception...
    Console.WriteLine(Ex.Name & vbTab & Ex.Start & vbTab & Ex.Finish)
Next 

顺便说一句:由于Exception一词指的是原生的vb.net对象,我建议你将变量更改为更明确 - 也许是CalExceptions。