Here is my sample code,

```
List<myClass> myclass1 = new List<myClass>();
List<myClass> myclass2 = new List<myClass>();
//add data to myClass1 from source
foreach (myClass data in source)
  myclass1.Add(data);
//add data to myClass2 from source
foreach (myClass data in source)
  myclass2.Add(data);

//Change name property only for myclass1
foreach (myClass data in myclass1)
data.Name = "Test";

```

After changing name property for `myclass1` object, its also modfiying the value of name property of `myclass2` to 'Test'. What is the reason & how do I avoid it?