The elements of s2 still point to the same
underlying objects (it is a shallow copy).
I.e. s2 contains references to the same block
object instances as the elements 0, 1 and 2 of
To make complete copies of your object depends
on what your Block class is/does. You may find http://msdn.microsoft.com/en-us/library/t63sy5hs.aspx
basic overview of the difference between a value
type and a reference type useful.
If the Block class has only value type fields
then a memberwise clone http://msdn.microsoft.com/en-us/library/system.object.memberwiseclone%28v=vs.110%29.aspx
is sufficient (this link also explains the key
differences between a shallow and deep copy).
If it contains reference fields (e.g.
references to other objects) you should add a
.Copy or .Clone method. Essentially, such a method
would create a new instance of its class,
assigning its values to the new class value fields
(or first doing a memberwise clone) and dealing
with the reference types (how depends on what they
You should start a new question explaining your
Block object and best practices for making copies
of instances of it.