that's because class instance assign is by ref, not a copy:
public class MyClass
{
public int Value;
}
var a = new MyClass { Value = 1};
var b = a; // b points to the same instance as a
Console.WriteLine(a.Value); // 1
b.Value = 2;
Console.WriteLine(a.Value); // 2
so in your case store the items values in a variable(s), and restore