2011-04-02 96 views
2

我有一个List(Of SomeObject),我使用For Each循环来枚举。这SomeObject包含一个属性引用另一个对象,这样ForEach在列表中更新对象的属性

Class SomeObject 
Public Property Another As AnotherObject 
Get 
    Return _another 
End Get 
Set (byval value as Integer) 
_another = value 
End Set 
End Property 

dim _another As New AnotherObject() 
End Class 

这个问题我有是,是否更新SomeObject的AnotherObject属性中的For Each循环有效。

这样

Dim newanother As New AnotherObject() 

For Each el As SomeObject in myobjects 
    el.Another = newanother 
Next 

这是有效的? 如果没有,那么有效的方法是什么? (普通的循环或许?)

+0

为什么这不是有效的?你关心的是什么?您不会从集合中添加/删除项目,甚至不会更改对象的参考。 – 2011-04-02 13:43:10

+0

@Cody Gray:我正在改变参考,它指向一个新的对象,但是是的,你是对的,我没有改变这个集合。我想我的担心是没有道理的... – 2011-04-02 13:48:07

+1

我不明白你是如何改变参考的。至少,您不会更改要迭代的对象的对象引用。您正在更改这些对象的*公共属性*的对象引用。这是完全不同的事情。 – 2011-04-02 13:53:59

回答

4

你只是改变了属性的值是正确的!!!,你可以在循环范围内进行操作,或者将你的固定类型设置为对象或系统类型。

你不能做的是改变迭代范围内的集合!