How to: Write a Copy Constructor (C# Programming Guide)
http://msdn.microsoft.com/en-us/library/ms173116(v=vs.80).aspx
Guidelines for Overloading Equals() and Operator == (C# Programming Guide)
http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx