Столкнулся с неожиданным для меня поведением структуры в C#.
public struct MyStruct
{
public int x;
public MyStruct(int a)
{
x = a;
}
public void Change(int b)
{
x = b;
}
}
public void MyFunc()
{
List<MyStruct> myStructList = new List<MyStruct>();
myStructList.Add(new MyStruct(13));
// myStructList[0].x содержит значение 13
myStructList[0].Change(43);
// myStructList[0].x по прежнему содержит значение 13
}
Насколько я понял, из-за того что структура не ссылочный тип, а тип значения, то если элемент структуры находится в списке, то функция Change() не изменяет его значения, а чего то другого. Объясните пожалуйста где здесь кроется загвоздка? У чего именно изменяется значение в функции Change()?