当前位置: 首页 > news >正文

网站建设 石景山/沈阳关键字优化公司

网站建设 石景山,沈阳关键字优化公司,焦作专业做网站公司,wordpress rest api开发欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群 在把一个对象赋值给另外一个同类型的对象时,意味着两个对象的堆栈信息是一样的。当你想把对象的某一个属性更改后再添加到一个列表的时候,就会被最后的对象替换掉,就不能实…

欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群


在把一个对象赋值给另外一个同类型的对象时,意味着两个对象的堆栈信息是一样的。当你想把对象的某一个属性更改后再添加到一个列表的时候,就会被最后的对象替换掉,就不能实现新对象的添加。下面两种方式可以实现对象赋值给同类型的对象,这两个对象的堆栈信息是不一样的。

方法一:

必须对对象进行序列化处理

   public static object DeepClone(object obj){BinaryFormatter bFormatter = new BinaryFormatter();MemoryStream stream = new MemoryStream();bFormatter.Serialize(stream, obj);stream.Seek(0, SeekOrigin.Begin);return bFormatter.Deserialize(stream);}

测试:

[Serializable]
class User
{public User(){}public int id;public string name;public User(int id, string name){this.id = id;this.name = name;}
}public class test : MonoBehaviour {List<User> users;User user;// Use this for initializationvoid Start () {users = new List<User>();user = new User(2,"小花");}int b = 5;private void Update(){if (Input.GetKeyDown(KeyCode.Q)){var a = new User();a = GameTool.DeepClone(user) as User;a.id = b++;users.Add(a);}}
}

方法二:

 public static object CopyObject(object obj){object targetDeepCopyObj;if (obj == null){Debug.Log("copy obj is null");}var targetType = obj.GetType();//值类型  if (targetType.IsValueType == true){targetDeepCopyObj = obj;}//引用类型   else{targetDeepCopyObj = Activator.CreateInstance(targetType);   //创建引用对象   MemberInfo[] memberCollection = obj.GetType().GetMembers();foreach (MemberInfo member in memberCollection){if (member.MemberType == MemberTypes.Field){FieldInfo field = (FieldInfo)member;object fieldValue = field.GetValue(obj);if (fieldValue is ICloneable){field.SetValue(targetDeepCopyObj, (fieldValue as ICloneable).Clone());}else{field.SetValue(targetDeepCopyObj, CopyObject(fieldValue));}}else if (member.MemberType == MemberTypes.Property){PropertyInfo myProperty = (PropertyInfo)member;MethodInfo info = myProperty.GetSetMethod(false);if (info != null){object propertyValue = myProperty.GetValue(obj, null);if (propertyValue is ICloneable){myProperty.SetValue(targetDeepCopyObj, (propertyValue as ICloneable).Clone(), null);}else{myProperty.SetValue(targetDeepCopyObj, CopyObject(propertyValue), null);}}}}}return targetDeepCopyObj;}public static void CopyObject(object source, object target){var targetType = target.GetType();if (targetType == null){targetType = source.GetType();}//值类型  if (targetType.IsValueType == true){target = source;}//引用类型   else{if (source == null){return;}MemberInfo[] memberCollection = source.GetType().GetMembers();foreach (MemberInfo member in memberCollection){if (member.MemberType == MemberTypes.Field){FieldInfo field = (FieldInfo)member;object fieldValue = field.GetValue(source);if (fieldValue is ICloneable){field.SetValue(target, (fieldValue as ICloneable).Clone());}else{field.SetValue(target, CopyObject(fieldValue));}}else if (member.MemberType == MemberTypes.Property){PropertyInfo myProperty = (PropertyInfo)member;MethodInfo info = myProperty.GetSetMethod(false);if (info != null){object propertyValue = myProperty.GetValue(source, null);if (propertyValue is ICloneable){myProperty.SetValue(target, (propertyValue as ICloneable).Clone(), null);}else{myProperty.SetValue(target, CopyObject(propertyValue), null);}}}}}}

测试:

class User
{public User(){}public int id;public string name;public User(int id, string name){this.id = id;this.name = name;}
}public class test : MonoBehaviour {List<User> users;User user;// Use this for initializationvoid Start () {users = new List<User>();user = new User(2,"小花");}int b = 5;private void Update(){if (Input.GetKeyDown(KeyCode.Q)){var a = new User();a = GameTool.CopyObject(user) as User;a.id = b++;users.Add(a);}}
}

测试结果keyu可以断点查看users数据


欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

http://www.lbrq.cn/news/1332163.html

相关文章:

  • 简述建设一个网站的基本步骤/中国科技新闻网
  • 网站结构图怎么画/seo是如何优化
  • 郑州做网站哪个/万网官网域名查询
  • 百度58网络推广怎么做/提升神马seo关键词自然排名
  • 新手做网站怎么上传系统/成功的网络营销案例ppt
  • 猪八戒网站 怎么做兼职/广州百度seo优化排名
  • 在猪八戒网站如何做兼职/南宁百度快速优化
  • 怎么做转载小说网站/seo研究中心qq群
  • 网站建设优化一体/信息互联网推广
  • 网站加载很慢/怎样注册自己的网站
  • 哪个网站可以做英语语法题/云服务器
  • 视频网站建设的背景简介/外贸推广营销公司
  • 用华为云建立Wordpress网站/长沙网络营销公司排名
  • 电商网站开发的项目描述/百度指数app下载
  • 福田企业网站推广哪个好/济南市最新消息
  • 做校招的网站有哪些/友情手机站
  • 新零售网站建设/如何成为百度广告代理商
  • wordpress淘宝ued/惠州seo关键字优化
  • 怎样可以免费做网站/外包公司是什么意思
  • 后台更新的内容在网站上不显示/青岛seo排名公司
  • 花卉网站建设策划书/优化教程
  • 国务院网站建设标准/友情链接怎么购买
  • 网站后台编辑内容不显示/windows优化工具
  • 桂电做网站的毕设容易过嘛/推广引流方法有哪些推广方法
  • web后端是做什么的/北京网站优化方式
  • 做seo网站优化价格/360竞价推广登录入口
  • 安庆网站建设工作室/网络卖货平台有哪些
  • ui中国网站/优化深圳seo
  • java企业门户网站开发教程/山东16市最新疫情
  • 佛山专业网站设计/网络营销是什么专业类别
  • 对于ui=f(state)的理解(react)
  • 疯狂星期四文案网第21天运营日记
  • 深入理解Java内存与运行时机制:从对象内存布局到指针压缩
  • Unity TAA
  • 中级全栈工程师笔试题
  • KNN算法实现图片的识别