2010-07-27 87 views
1

我在我的网站有一个问题,我有两个对象在会议中举行,两个对象的结构不同,并没有任何链接到对方(不是故意)。但是,这两个对象都有一系列“旅行者”。我试图做的是通过添加或删除“旅行者”来修改一个集合,当完成按钮被点击后,修改后的集合将被保存到另一个对象。更新1对象似乎也更新另一个。 VB.Net

问题是,由于某种原因,当我修改一个对象中的一个集合时,还会对另一个对象中的集合进行修改。

这里有一个粗略的例子:

Dim bookingContext As BookingContext = Session("BookingContext") 
Dim personSearchContext As PersonSearchContext = Session("PersonSearchContext") 
Dim personId As Integer = Request.Form("PersonID") 
Dim mode As String = Request.Form("Mode") 

Select Case mode 
    Case "Add" 
     For Each traveller As PersonProfile In personSearchContext.Travellers 
      If traveller.PersonID = personId Then 
       personSearchContext.SelectedTravellers.Add(traveller) 
       Exit For 
      End If 
     Next 
     context.Session("PersonSearchContext") = personSearchContext 
    Case "Remove" 
     For Each traveller As PersonProfile In personSearchContext.SelectedTravellers 
      If traveller.PersonID = personId Then 
       travellerSearchContext.SelectedTravellers.Remove(traveller) 
       Exit For 
      End If 
     Next 
     context.Session("PersonSearchContext") = personSearchContext 
    Case "Save" 
     bookingContext.Travellers = personSearchContext.SelectedTravellers 
     context.Session("BookingContext") = bookingContext     
End Select 

的问题是对象“BookingContext”内的游客收集被更新时,我添加和从集合“PersonSearchContext”中删除。就好像它们之间有某种链接或指针。

任何想法?

干杯。

回答

1

的问题是这条线在您保存代码:

bookingContext.Travellers = personSearchContext.SelectedTravellers 

你在做什么有走的是参考SelectedTravellers集合中的personSearchContext对象和分配在bookingContext的参考旅行者收集目的。此分配意味着bookingContext.Travellers不再是personSearchContext.SelectedTravellers的单独集合。他们现在都在内存中引用同一个对象。

+0

太棒了!当你考虑它时是有意义的。我的代码没有,干杯队友。 – DazzledKid 2010-07-27 14:16:12