C# 克隆实体类
时间: 2023-07-12 18:09:41 浏览: 54
在 C# 中,可以使用 Object 类的 Clone 方法来实现克隆实体类。但是,需要注意的是,Object 类的 Clone 方法只实现了浅拷贝,即对于类中的引用类型,只是拷贝了引用,而没有拷贝引用指向的对象。如果需要实现深拷贝,需要手动实现 Clone 方法。
以下是一个示例代码,演示了如何实现一个 Employee 类的克隆方法:
```csharp
public class Employee : ICloneable
{
public string Name { get; set; }
public int Age { get; set; }
public Department Department { get; set; }
public object Clone()
{
Employee clone = (Employee)this.MemberwiseClone();
clone.Department = (Department)this.Department.Clone();
return clone;
}
}
public class Department : ICloneable
{
public string Name { get; set; }
public object Clone()
{
return this.MemberwiseClone();
}
}
```
在上面的示例中,Employee 类实现了 ICloneable 接口,并重写了 Clone 方法。在 Clone 方法中,首先调用了 MemberwiseClone 方法来实现浅拷贝,然后对于 Department 属性,手动调用了其 Clone 方法,实现了深拷贝。这样就可以实现 Employee 类的克隆操作了。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)