2010-07-27 51 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