【发布时间】:2015-05-01 06:27:05
【问题描述】:
假设我有一个名为 persons 的 Person 对象 (List<Person>) 列表,如下所示:
class Person
{
public int PersonId { get; set; } // Unique ID for the person loaded from database
public string Name { get; set; }
}
// In a different class
public List<Person> Persons = new List<Person>(); // Person objects are subsequently added to the list
然后我从列表中选择一些Person 对象,按属性对它们进行排序(例如,按每个人的唯一ID PersonId),然后将这些选定的Person 对象添加到另一个名为selectedPersons 的列表中.
我现在需要编辑位于selectedPersons 中的Person 对象的属性,但需要对persons 中此Person 对象的原始副本进行这些更改。我目前只知道此人在selectedPersons 列表中的索引,所以我可以简单地编辑selectedPersons 列表中的人并将对该人所做的更改反映在原始persons 列表中强>,像这样:
selectedPersons[selectedPersonIndex].Name = "John";
或我是否必须编辑persons 列表中的原始Person 对象,首先使用人的ID 在persons 列表中查找该人的索引,如下所示:
persons[FindPersonIndexById(selectedPersons[selectedPersonIndex].BookingId).Name = "John";
其中FindPersonIndexById 返回persons 中 ID 与给定 ID 匹配的人的索引。
我知道列表是 C# 中的引用类型,但是,当一个列表中的对象添加到另一个列表中时,我不确定对第二个列表中的对象所做的更改是否会自动对第一个列表中的相同对象进行。
【问题讨论】:
-
您有 2 个不同的 List 实例...但它们包含对同一个人对象的引用。因此,您对任何列表中的任何人所做的任何更改,都会在两个列表中修改相同的人对象。
-
你为什么不简单地测试一下?
-
这么简单的几行代码,为什么要在这里提问?
-
@DavidG 是的,我想是的,尽管在这里问我确切地知道为什么某些东西以特定的方式起作用,而不仅仅是那个它起作用
标签: c# list object reference-type