【发布时间】:2013-03-02 17:36:29
【问题描述】:
假设我有这门课
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public bool isActive { get; set; }
}
并像这样使用它:
List<Employee> Employees = new List<Employee>();
Employees.Add(new Employee { FirstName = "firstname", LastName = "lastname", isActive = true });
List<Employee> EmployeesCopy = new List<Employee>(Employees);
EmployeesCopy[0].isActive = false;
为什么EmployeesCopy 的isActive 属性的更改也会修改原始列表中的属性?
【问题讨论】:
-
因为
Employee是一个引用类型(类)。 -
是时候回到书本上,这样您就可以清楚地了解引用类型和值类型之间的区别了。这个 sh*t 真的很重要。确保你得到它。
-
是的,不是和员工副本,而是包含同一员工的另一个列表。
-
这是一个问得很好(但重复)的问题。它不值得被否决。 +1
标签: c# .net properties deep-copy shallow-copy