2011-09-21 65 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

在这种情况下扩展方法是不必要的。您可以将其添加为公共方法。 –