[最佳答案] You need to implement IClonable interface and provide implementation for the clone method. Don't implement this if you want to avoid casting. A simple deep cloning method could be to serialize the object to memory and then deserialize it. All the custom data types used in your class need to be serializable using the [Serializable] attribute. For clone you can use something like public MyClass Clone() { MemoryStream ms = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); bf.Serializ