假设我有一个 Person
的列表对象 ( List<Person>
) 称为 persons
,像这样:
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
的列表.
我现在需要编辑 Person
的属性selectedPersons
中的对象, 但这些更改需要对此 Person
的原始副本进行persons
中的对象.我目前只知道这个人在selectedPersons
的索引列表,所以我可以简单地编辑 selectedPersons
中的人吗?列出并在原件中反射(reflect)对该人所做的更改 persons
列表,像这样:
selectedPersons[selectedPersonIndex].Name = "John";
或我必须编辑原始的Person
吗? persons
中的对象通过首先找到 persons
人的索引来列出使用此人的 ID 列出,如下所示:
persons[FindPersonIndexById(selectedPersons[selectedPersonIndex].BookingId).Name = "John";
哪里FindPersonIndexById
返回 persons
中人员的索引其 ID 与给定的 ID 匹配。
我知道列表是 C# 中的引用类型,但是,当将一个列表中的对象添加到另一个列表时,我不确定对第二个列表中的对象所做的更改是否会自动对第一个列表中的相同对象进行更改.
最佳答案
当你有一个引用类型而不是值类型的对象列表时,存储在列表中的是列表中每个对象的引用。因此,如果将同一个对象添加到两个不同的列表,实际上是将相同的引用添加到第二个列表。因此,如果您对对象进行任何更改,这将在两个列表中“可见”。
关于c# - 在 C# 中,如果将列表中的对象添加到另一个列表中,更改第二个列表中的对象是否会更改第一个列表中的同一对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28783768/