I'm quite unsure what I should use in C# - both should in theory do the same, but I think both are quite easely overseen. Or is there another possibility I have to take in consideration?I know in C++ you use copy-constructors. But in C# I have never heard much of them (they are just a ctor with self as parameter and should reassign all data)Also should my copy-ctor deep copy all objects or only reassign them?What is considered 'best practice' for this scenario?
Should I create .Clone() on a class or create a copy-constructor?
c#;design;design patterns;programming practices;language design
Use copy constructors.  Here's why:IClonable semantics are ambiguous.  Microsoft never specified whether a clone should be a shallow or deep copy.You can specify custom behavior in your copy constructor, such as giving each copy its own unique ID or only copying some fields and not others. Further ReadingCopy constructor vs Clone in C#