【发布时间】:2021-01-23 03:23:31
【问题描述】:
我不确定下面代码的问题在哪里,其中一个类实例的值会改变另一个类实例的值。似乎我有类型类的问题属性,其中一个类中设置的值会影响同一类型的另一个类的值。示例如下。我想要实现的是在从一个类(结果 2)分配值之后,对另一个类的后续操作不会影响前一个类。
public class Address {
public string Street {
get;
set;
}
}
public class Person {
public string Name {
get;
set;
}
public List<Address> Addresses {
get;
set;
} = new List<Address>();
public int Age {
get;
set;
}
}
public class Employee {
public string EmpID {
get;
set;
}
public Person EmployeePerson {
get;
set;
}
}
var emp = new Employee {
EmpID = "1",
EmployeePerson = new Person {
Name = "Alice", Addresses =
new List<Address> {
new Address {
Street = "123 Street"
}
}
}
};
var per = new Person {
Name = emp.EmployeePerson.Name, Addresses = emp.EmployeePerson.Addresses };
per.Addresses[0].Street = "New Street";
per.Name = "New Name";
Console.WriteLine("Result 1: {0} , {1}",
emp.EmployeePerson.Name, per.Name);
Console.WriteLine("Result 2: {0} , {1}",
emp.EmployeePerson.Addresses[0].Street, per.Addresses[0].Street);
结果 1:爱丽丝,新名字
结果 2: 新街,新街
【问题讨论】:
-
Result 1: Alice , New Name Result 2: New Street , New Street你期望的exact输出是什么? -
您提供的链接似乎是在不添加新自定义代码的情况下解决问题的最佳方法。
标签: c#