Imagine this struct :
struct Person
{
public string FirstName { get; set; }
public string LastName { g
When you return the struct via the List[] indexer, it returns a copy of the entry. So if you assigned the FirstName there, it would just be thrown away. Hence the compiler error.
Either rewrite your Person to be a reference type class, or do a full reassignment:
Person person = list[1];
person.FirstName = "F22";
list[1] = person;
Generally speaking, mutable structs bring about issues such as these that can cause headaches down the road. Unless you have a really good reason to be using them, you should strongly consider changing your Person type.
Why are mutable structs “evil”?