using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
using System.Net;
using System.Net.Sockets;
using System.Linq;
using DG.Tweening;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
public class Testsss : MonoBehaviour
{
private void Awake()
{
Employee mike = new Employee() { IDCode = "NB123", Age = 30, Department = new Department { Name = "Dep1" } };
Employee rose = mike.Clone() as Employee;
print($"idcode = {rose.IDCode},age = {rose.Age},depa = {rose.Department.Name}");
mike.IDCode = "NB456";mike.Age = 10; mike.Department.Name = "Dep2";
print($"idcode = {rose.IDCode},age = {rose.Age},depa = {rose.Department.Name}");
}
}
[Serializable]
class Employee:ICloneable
{
public string IDCode { get; set; }
public int Age { get; set; }
public Department Department { get; set; }
#region 浅拷贝
public object Clone()
{
return this.MemberwiseClone();
}
#endregion
public Employee DeepClone()//深度拷贝
{
using (Stream objectStream = new MemoryStream())
{
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(objectStream, this);
objectStream.Seek(0, SeekOrigin.Begin);
return formatter.Deserialize(objectStream) as Employee;
}
}
public Employee ShallowClone()
{
return Clone() as Employee;
}
}
class Department
{
public string Name { get; set; }
public override string ToString()
{
return this.Name;
}
}
C#深度拷贝和浅拷贝
猜你喜欢
转载自blog.csdn.net/weixin_41995872/article/details/106082550
今日推荐
周排行