Having to become a pro C# programmer quickly, I'm interested in this.
A Java background is both helpful and confusing when approaching
C# programming. There are some big differences in terms of types.
Doing 'int j = i;' makes a copy of i's value because j is a value type,
even though doing 'j.toString();' is possible. Using the word 'deep'
isn't really applicable because there is no depth to an int, it doesn't
reference anything. The term 'deep copy' involves cloning objects that
reference other objects.
Excerpts from web pages:
http://www.csharpfriends.com/Spec/index.aspx?specID=11.1.3.htm1 C# provides a set of predefined struct types called the simple types.
2 The simple types are identified through reserved words, but these
reserved words are simply aliases for predefined struct types in the
System namespace, as described in the table below.
...
int System.Int32
...
1 Because a simple type aliases a struct type, every simple type has members.
2 For example, int has the members declared in System.Int32 and the members
inherited from System.Object...
...
string t = 123.ToString(); // System.Int32.ToString() instance method
http://www.csharpfriends.com/Spec/index.aspx?specID=11.htm1 Value types differ from reference types in that variables of the
value types directly contain their data, whereas variables of the
reference types store references to their data, the latter being known
as objects.
2 With reference types, it is possible for two variables to reference
the same object, and thus possible for operations on one variable to
affect the object referenced by the other variable.
3 With value types, the variables each have their own copy of the data,
and it is not possible for operations on one to affect the other.
http://www.csharpfriends.com/Spec/index.aspx?specID=11.1.htm#value-type1 A value type is either a struct type or an enumeration type.
2 C# provides a set of predefined struct types called the simple types.
3 The simple types are identified through reserved words.
...
1 All value types implicitly inherit from class object.
...
1 A variable of a value type always contains a value of that type.
...
1 Assignment to a variable of a value type creates a copy of the value being assigned.
...
http://en.csharp-online.net/Glossary_of_.NET_/_CSharp_TermsRefers to a method of cloning—copying—an object in which the clone contains the complete encapsulated data of the original instance. Thus, the clone can be used independently of the original object. In other words, a deep copy contains copies not only of instance variables but, also, of any objects pointed to by reference variables.
more...
http://www.jaggersoft.com/pubs/AProgrammersOverviewOfCSharp.htmhttp://www.harding.edu/fmccown/java1_5_csharp_comparison.htmlhttp://www.albahari.com/value%20vs%20reference%20types.html