Say I have a list of Person
objects (List<Person>
) called persons
, like this:
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
and then I select some of the Person
objects from the list, sort them by a property (e.g. by each person's unique ID PersonId
), and add these selected Person
objects to another list called selectedPersons
.
I now need to edit the properties of a Person
object that is in selectedPersons
, but these changes need to be made to the original copy of this Person
object in persons
. I currently only know the index of this person in the selectedPersons
list, so can I simply edit the person in the selectedPersons
list and have the changes made to that person reflected in the original persons
list, like this:
selectedPersons[selectedPersonIndex].Name = "John";
or do I have to edit the original Person
object in the persons
list by first finding the index of the person the persons
list using the person's ID, like this:
persons[FindPersonIndexById(selectedPersons[selectedPersonIndex].BookingId).Name = "John";
where FindPersonIndexById
returns the index of the person in persons
whose ID matches the ID given.
I know lists are reference types in C#, but, when objects from one list are added to another list, I wasn't sure whether changes made to objects in the second list are automatically made to the same objects in the first list.