c#合并对象

时间:2011-09-21 17:49:29

标签: c# .net .net-4.0

    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");

我想合并对象,以便user2将从user1

获取名称和汽车

user2将具有此值

user2.Name将是userName user2.cars将持有Mazda和Bmw

谢谢!

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;
     }
 }