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

番禺网站推广黄石网站设计制作

番禺网站推广,黄石网站设计制作,怎么查网站的icp备案,推广策略及推广方式目录 一、浅拷贝 二、深拷贝 一、浅拷贝 就是把原来的数据#xff0c;复制一份#xff0c;但是2份数据是共享地址的#xff0c;修改第一份数据或者修改第二份数据#xff0c;都会一起改变#xff0c;这可能不是我们程序中需要的场景。 下面我们演示一下#xff0c;首…目录 一、浅拷贝 二、深拷贝 一、浅拷贝 就是把原来的数据复制一份但是2份数据是共享地址的修改第一份数据或者修改第二份数据都会一起改变这可能不是我们程序中需要的场景。 下面我们演示一下首先建立一个树结构的数据类型其他类型也可以 1.建立项目 2.建立树结构数据 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace WpfApp4 {public class TestData1{public int ID { get; set; }public string D1 { get; set; }public string D2 { get; set; }public TestData2 testData2 { get; set; }}public class TestData2{public int ID { get; set; }public string D1 { get; set; }public string D2 { get; set; }public TestData3 testData3 { get; set; }}public class TestData3{public int ID { get; set; }public string D1 { get; set; }public string D2 { get; set; }} }2.效果 此时testData1的值呈现树结构显示 把testData1的值赋值给test1后依然呈现树结构显示 当修改testData1的D1的值后test1的D1的值也改变了 这个就是浅拷贝这种拷贝在程序场景中很少用到不知道的人偶尔会很奇怪。 二、深拷贝 就是把原来的数据复制一份但是2份数据不是共享地址的修改第一份数据或者修改第二份数据不会一起改变这种场景大部分是我们程序中需要的场景。 前面的数据结构依然不变深拷贝在程序中运用的场景非常多我们说4种方法。 1.反射实现 可见修改testData1的D1的值后test2的D1的值并没有变化这正是我们需要的后续可以对testData1和test2的数据分别进行业务操作。  2.JSON字符串序列化 此处需要使用Newtonsoft.Json这个包 这里我们首先是先把对象转成字符串再把字符串转成对象效果和上面是一样的。  补充也可以使用Net6中自带的序列化需要引用System.Text.Json 效果一样代码如下 var test31 JsonSerializer.DeserializeTestData1(JsonSerializer.Serialize(testData1)); //首先是先把对象转成字符串再把字符串转成对象testData1.D1 我修改了; 3.表达式树 和上面的效果一样。 4.AutoMapper 这个是第三方的也可以使用其他的对象映射 此时我们需要先安装 安装完成后第一句代码需要进行配置然后直接调用即可  可见效果都是一样的。  代码 using AutoMapper; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Text; using System.Text.Json; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using static WpfApp4.MainWindow; using Expression System.Linq.Expressions.Expression;namespace WpfApp4 {/// summary/// Interaction logic for MainWindow.xaml/// /summarypublic partial class MainWindow : Window{public MainWindow(){InitializeComponent();TestData3 testData3 new TestData3();testData3.ID 3;testData3.D1 3.1;testData3.D2 3.2;TestData2 testData2 new TestData2();testData2.ID 2;testData2.D1 2.1;testData2.D2 2.2;testData2.testData3 testData3;TestData1 testData1 new TestData1();testData1.ID 1;testData1.D1 1.1;testData1.D2 1.2;testData1.testData2 testData2;#region 浅拷贝演示浅拷贝演示把testData1复制一份//TestData1 test1 testData1;修改test1的值那么testData1的值也会变化//testData1.D1 我修改了;#endregion#region 深拷贝演示//1.反射//var test2 DeepCopyWithReflection(testData1);//testData1.D1 我修改了;//2.JSON字符串序列化//var test3 JsonConvert.DeserializeObjectTestData1(JsonConvert.SerializeObject(testData1)); //首先是先把对象转成字符串再把字符串转成对象//testData1.D1 我修改了;//var test31 JsonSerializer.DeserializeTestData1(JsonSerializer.Serialize(testData1)); //首先是先把对象转成字符串再把字符串转成对象//testData1.D1 我修改了;//3.表达式树//var test4 TransExpTestData1, TestData1.Trans(testData1);//testData1.D1 我修改了;//4.AutoMappervar config new MapperConfiguration(cfg cfg.CreateMapTestData1, TestData1());//映射配置var test5 config.CreateMapper().MapTestData1(testData1);testData1.D1 我修改了;#endregion}/// summary/// 利用反射实现深拷贝/// /summary/// typeparam nameT/typeparam/// param nameobj/param/// returns/returnspublic static T DeepCopyWithReflectionT(T obj){Type type obj.GetType();// 如果是字符串或值类型则直接返回if (obj is string || type.IsValueType) return obj;// 如果是数组if (type.IsArray){Type elementType Type.GetType(type.FullName.Replace([], string.Empty));var array obj as Array;Array copied Array.CreateInstance(elementType, array.Length);for (int i 0; i array.Length; i){copied.SetValue(DeepCopyWithReflection(array.GetValue(i)), i);}return (T)Convert.ChangeType(copied, obj.GetType());}object retval Activator.CreateInstance(obj.GetType());PropertyInfo[] properties obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.NonPublic| BindingFlags.Instance | BindingFlags.Static);foreach (var property in properties){var propertyValue property.GetValue(obj, null);if (propertyValue null)continue;property.SetValue(retval, DeepCopyWithReflection(propertyValue), null);}return (T)retval;}/// summary/// 表达式树/// /summary/// typeparam nameTIn/typeparam/// typeparam nameTOut/typeparampublic static class TransExpTIn, TOut{private static readonly FuncTIn, TOut cache GetFunc();private static FuncTIn, TOut GetFunc(){ParameterExpression parameterExpression Expression.Parameter(typeof(TIn), p);ListMemberBinding memberBindingList new ListMemberBinding();foreach (var item in typeof(TOut).GetProperties()){if (!item.CanWrite) continue;MemberExpression property Expression.Property(parameterExpression, typeof(TIn).GetProperty(item.Name));MemberBinding memberBinding Expression.Bind(item, property);memberBindingList.Add(memberBinding);}MemberInitExpression memberInitExpression Expression.MemberInit(Expression.New(typeof(TOut)), memberBindingList.ToArray());ExpressionFuncTIn, TOut lambda Expression.LambdaFuncTIn, TOut(memberInitExpression, new ParameterExpression[] { parameterExpression });return lambda.Compile();}public static TOut Trans(TIn tIn){return cache(tIn);}}} }本案例代码 https://download.csdn.net/download/u012563853/88637534 来源 C#浅拷贝和深拷贝数据-CSDN博客
http://www.hkea.cn/news/14359736/

相关文章:

  • 二级域名著名网站百度网盘app免费下载安装老版本
  • 网站页脚内容个人网站设计制作步骤
  • 长春网站制作企业小程序流量点击推广平台
  • 城市建设和房屋管理部门网站广州冼村改造
  • 湘潭网站建设出色磐石网络东莞企业网站优化
  • 动漫网站开发 百度一下南京建设厅官方网站
  • 建设网站的标语wordpress主题开发班
  • 邢台123式的网站怎么做网站cms识别
  • 北京校园网站建设打开网站说建设中是什么问题
  • 山西建设厅网站查不了wordpress插件分享显示图片
  • 北京工程建设质量协会网站门户网站的营销方式
  • php网站做cdn江苏省网站建设
  • 龙华网站开发公司电话做网站优化公司排行
  • 临沂学做网站咸宁网站建设价格
  • 中山网站开发招聘wordpress如何删除你好和设置菜单
  • 网站icp备案认证怎么做群晖nas可以做网站
  • 织梦猫html5高端网络服务机构网站模板山东高阳建设公司网站
  • 网站关键字推广收银会员卡管理系统
  • 全球网站排行榜大连建站公司
  • 污染网站代码广西东晋建设有限公司网站
  • 排名推广网站保定网站建
  • 网站开发工程师php岗位职责网络营销设计
  • 网站个人简介怎么做wordpress的登录地址修改
  • 乐山市城乡规划建设局网站网站定制报价
  • 谷歌做网站推广广告公司可以做网站吗
  • 重庆营销型网站建设公司丹东市网站建设
  • 上海建设银行网站上班时间表男女激烈做羞羞事网站
  • 企业网站建设运营的灵魂是厦门建设银行招聘网站
  • 丰台网站建设WordPress默认模板做的站
  • 类似淘宝网站模板网站静态化的好处