Imagine this struct :
struct Person
{
public string FirstName { get; set; }
public string LastName { g
Redo your struct as such:
struct Person
{
private readonly string firstName;
private readonly string lastName;
public Person(string firstName, string lastName)
{
this.firstName = firstName;
this.lastName = lastName;
}
public string FirstName { get { return this.firstName; } }
public string LastName { get { return this.lastName; } }
}
And following code as :
var list = new List();
list.Add(new Person("F1", "L1"));
list.Add(new Person("F2", "L2"));
list.Add(new Person("F3", "L3"));
// Can modify the expression because it's a new instance
list[1] = new Person("F22", list[1].LastName);
This is due to the copy semantics of struct. Make it immutable and work within those constraints and the problem goes away.