2011-09-21 75 views
2
Class Person 
    { 
     string Name 
     int yesno 
     int Change 
     List<Cars> Personcars; 
     houses Personhouses 
    } 

Person user1 = new Person() 
Person user2 = new Person() 

user1.Name = "userName" 
user2.Name =""; 

user2.cars[0] = new car("Mazda"); 
user1.cars[0] = new car("BMW"); 

我要合併的對象,使用戶2將自己取的名字,並從用戶1C#合併對象

user2的汽車都會有這個值

user2.Name將userName的 user2.cars將舉行馬自達和寶馬

謝謝!

+0

但是,如果兩個合併的人都有名字會發生什麼? 更令人擔憂的是,如果這是模擬人們;你如何計劃合併實際的人? – eyesathousand

+0

該代碼甚至不會在當前狀態下編譯。我認爲你需要解決這個問題。 – starskythehutch

+0

您的Person類中的所有變量都是私有的。這不能是你的實際代碼。 –

回答

3
user2.Name = user1.Name; 
user2.Personcars.AddRange(user1.Personcars); 

你可以將其添加爲類本身的方法:

public class Person 
{ 
    List<Cars> _personcars; 

    public string Name { get; set; } 
    // what the hell is a yesno int? If it's 1 or 0 then just use a bool 
    public int yesno { get; set; } 
    public int Change { get; set; } 
    public List<Cars> Personcars 
    { 
     get 
     { 
      return _personcars ?? (_personCars = new List<Cars>()); 
     } 
     set { _personcars = value; } 
    } 
    public Houses Personhouses { get; set; } 

    public void Merge(Person person) 
    { 
     Name = person.Name; 
     Personcars.AddRange(person.Personcars); 
    } 
} 

,這將使你寫這樣的事情:

user2.Merge(user1); 
+0

downvote?真? – hunter

+0

+1'//這是一個yesno int嗎?如果它是1或0,那麼只需使用bool ' –

+0

爲什麼即使需要int int yesno ?!如果它不是一個人,那麼爲什麼它在Person類中呢? – 2011-09-21 18:08:11

3

試試這個擴展方法

public void Merge(this Person _person, Person source) 
{ 
    _person.Name = source.Name; 
    if(_person.Cars !=null) 
    { 
     _person.Cars.AddRang(source.Cars); 
    } 
    else 
    { 
     _person.Cars = source.Cars; 
    } 
} 
+1

在這種情況下擴展方法是不必要的。您可以將其添加爲公共方法。 –