You can't "reuse" an object and add it to a list:
public class MyClass
{
public string Name { get; set; }
public int Number { get; set; }
public MyClass(string name) { Name = name; }
}
List<MyClass> list = new List<MyClass>();
MyClass instance = new MyClass("Joe");
instance.Number = 666;
list.Add(instance);
instance.Name = "Mike";
list.Add(instance);
foreach (MyClass mc in list) Console.WriteLine("Name: {0}, Number: {1}", mc.Name, mc.Number);
Will output:
Name: Mike, Number: 666
Name: Mike, Number: 666
because the list stores a reference to the instance of the object you add, not a copy of it. (Hence a Class instance is a Reference Type - you pass around references to the object all the time).
If you want to add different objects to the list, you have to create new instances for each one you add - performance issue or not.