Does C# have copy constructors?
No. Objects in C# are always created by reference rather than by value, so a copy constructor is never implicitly called the way that it might be in C++. That being said, nothing prevents a class from implementing a constructor that accepts a reference to an object of the same type. This constructor may be called explicitly.