You are lost very well, need to go from the very beginning.
Class is a type. You cannot copy a type. You can copy an object, instance of a type. Classes are
reference types. When you create, say, an instance of a type, your get too references of the same objects.
class A { }
A a = new A();
A b = a;
The reference itself is also an object, so an object of a reference type is a reference itself, which can be considered as a an object, and the object referenced by a reference. This way,
a.SomeMember = 3
will make
b.SameMember
also 3. At the same time, if later you write
b = new A();
, you will loose an extra reference to the same object as the one referenced by
a
and have two different objects, referenced by two references. In other words, new assignment to the reference
b
will not affect
a
.
Now, imagine that two different objects have
fields of the type
A
. When you copy one to another, they will reference the same object. This object will be shared between two instanced of this other class or structure. Or they can reference distinct, different object of
A
.
This is all the very, very basics which you should understand 100% clearly. Without it, there is no .NET programming at all. And this is the point where you did not start "read" OOP yet…
—SA