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

上海外贸网站制作个人做网站做什么样的话

上海外贸网站制作,个人做网站做什么样的话,郑州网站优化工资,如何修改网站备案的域名也许会有人这样解释C# 中浅拷贝与深拷贝区别#xff1a; 浅拷贝是对引用类型拷贝地址#xff0c;对值类型直接进行拷贝。 不能说它完全错误#xff0c;但至少还不够严谨。比如#xff1a;string 类型咋说#xff1f; 其实#xff0c;我们可以通过实践来寻找答案。 首先         浅拷贝是对引用类型拷贝地址对值类型直接进行拷贝。 不能说它完全错误但至少还不够严谨。比如string 类型咋说   其实我们可以通过实践来寻找答案。 首先定义以下类型 int 、string 、enum 、struct 、class 、int[ ] 、string[ ] 代码如下     //枚举    public enum myEnum    { _1  1, _2  2 }     //结构体    public struct myStruct    {        public int _int;        public myStruct(int i)        { _int  i; }    }     //类    class myClass    {        public string _string;        public myClass(string s)        { _string  s; }    }     //ICloneable创建作为当前实例副本的新对象。    class DemoClass : ICloneable    {        public int _int  1;        public string _string  1;        public myEnum _enum  myEnum._1;        public myStruct _struct  new myStruct(1);        public myClass _class  new myClass(1);        //数组        public int[] arrInt  new int[] { 1 };        public string[] arrString  new string[] { 1 };         //返回此实例副本的新对象        public object Clone()        {            //MemberwiseClone返回当前对象的浅表副本(它是Object对象的基方法)            return this.MemberwiseClone();        }    } 注意 ICloneable 接口支持克隆即用与现有实例相同的值创建类的新实例。 MemberwiseClone 方法创建当前 System.Object 的浅表副本。   接下来构建实例A 并对实例A 克隆产生一个实例B。 然后改变实例B 的值并观察实例A 的值会不会被改变。 代码如下 class 浅拷贝与深拷贝{    static void Main(string[] args)    {        DemoClass A  new DemoClass();        //创建实例A的副本 -- 新对象实例B        DemoClass B  (DemoClass)A.Clone();         B._int  2;        Console.WriteLine( int \t\t  A:{0}  B:{1}, A._int, B._int);         B._string  2;        Console.WriteLine( string \t  A:{0}  B:{1}, A._string, B._string);         B._enum  myEnum._2;        Console.WriteLine( enum \t\t  A:{0}  B:{1}, (int)A._enum, (int)B._enum);         B._struct._int  2;        Console.WriteLine( struct \t  A:{0}  B:{1},                           A._struct._int, B._struct._int);         B._class._string  2;        Console.WriteLine( class \t\t  A:{0}  B:{1},                           A._class._string, B._class._string);         B.arrInt[0]  2;        Console.WriteLine( intArray \t  A:{0}  B:{1},                           A.arrInt[0], B.arrInt[0]);         B.arrString[0]  2;        Console.WriteLine( stringArray \t  A:{0}  B:{1},                           A.arrString[0], B.arrString[0]);         Console.ReadKey();    }} 结果如下 从最后的输出结果我们得知 对于内部的Class 对象和数组则Copy 一份地址。[ 改变B 时A也被改变了 ] 而对于其它内置的int / string / enum / struct / object 类型则Copy 一份值。   有一位网友说string 类型虽然是引用类型但是很多情况下.Net 把string 做值类型来处理我觉得string 应该也是按照值类型处理的。这说明他对string 类型还不够了解。 可以肯定的是string 一定是引用类型。那它为什么是深拷贝呢 如果你看一下string 类型的源代码就知道了 //表示空字符串。此字段为只读。public static readonly string Empty; 答案就在于 string 是 readonly 的当改变 string 类型的数据值时将重新分配了内存地址。   下面引用一段网友的代码Vseen[ Aloner ] 的个人陋见 public class Student{   // 这里用“字段”其实应当是属性。   public string Name;   public int Age;   //自定义类 Classroom   public Classroom Class;}浅拷贝Student A 浅拷贝出 Student BName和Age拥有新的内存地址但引用了同一个 Classroom。深拷贝Student A 浅拷贝出 Student BName和Age拥有新的内存地址并且A.Classroom 的内存地址不等于 B.Classroom。 其实俗点讲有点像 public object Clone(){   Student B  new Student();   B.Name  this.Name;   B.Age  this.Age;   //浅拷贝   B.Class  this.Class;   //深拷贝   B.Class  new Classromm();   B.Class.Name  this.Class.Name;   B.Class.Teacher  this.Class.Teacher;   //根据情况对Teacher 进行判定要进行的是深拷贝还是浅拷贝。}   浅拷贝给对象拷贝一份新的对象。 浅拷贝的定义 —— 只对值类型或string类型分配新的内存地址。 深拷贝给对象拷贝一份全新的对象。 深拷贝的定义 —— 对值类型分配新的内存地址引用类型、以及引用类型的内部字段分配的新的地址。 我是这么定义的浅拷贝换汤不换药。   注意 1、在 .NET 程序中应该避免使用 ICloneable 接口。       因为通过该接口无法判断究竟是浅拷贝还是深拷贝这会造成误解或误用。   2、深拷贝应该复制该对象本身及通过该对象所能到达的完整的对象图浅拷贝只复制对象本身就是该对象所表示的在堆中的一块连续地址中的内容。   个人愚见 Clone 深层拷贝拷贝到了指针指向的内存块的值。   浅拷贝仅仅拷贝了指针的内容。只是给一个对象多起了个名字所以当改变拷贝的某个属性的时候原对象的对应属性亦会改变。       浅拷贝是指将对象中的所有字段逐字复杂到一个新对象。对值类型字段只是简单的拷贝一个副本到目标对象改变目标对象中值类型字段的值不会反映到原始对象中因为拷贝的是副本对引用型字段则是指拷贝他的一个引用到目标对象。改变目标对象中引用类型字段的值它将反映到原始对象中因为拷贝的是指向堆是上的一个地址深拷贝深拷贝与浅拷贝不同的是对于引用字段的处理深拷贝将会在新对象中创建一个新的对象和原始对象中对应字段相同内容相同的字段也就是说这个引用和原始对象的引用是不同 我们改变新对象中这个字段的时候是不会影响到原始对象中对应字段的内容。推荐 C#中的深复制和浅复制在C#中克隆对象 由浅拷贝讨论到深拷贝再讨论到接口(一):浅拷贝和深拷贝  6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱C# 读书笔记 ---- 浅度复制与深度复制
http://www.pierceye.com/news/240703/

相关文章:

  • 湛江网站排名提升免费网站空间有什么用
  • 装修公司网站 源码绍兴市交通建设检测中心网站
  • 企业建设网站流程图珠海网站建设 旭洁
  • 企业商城网站开发互联网行业公司
  • 中国建设人才服务信息网是正规网站wordpress文章分享
  • 渭南网站建设公司电话央美老师做的家具网站
  • 机械网站建设栏目内容怎么欣赏一个网站设计图
  • 帝国cms 网站搬家wordpress 购物 插件下载
  • 怎么做ppt教程网站手机能访问asp网站
  • 电子商务网站建设与管理教材评价织梦网站地图调用全站文章
  • 020网站开发多少钱汕尾建设网站首页
  • 桓台县建设局网站做弹幕网站有哪些
  • 淘宝客导购网站源码iis默认网站属性
  • 做网站用矢量图还是位图安徽省住房和建设厅网站
  • 彭阳网站建设多少钱嘉兴专业的嘉兴专业网站建设项目
  • 网站建设导航分哪几类公司网站大全
  • 网站建设 实训题安能建设总公司网站打不开
  • 莱西网站建设龙岗中心城有学网站建设
  • 重庆技术网站建设宝安做网站哪家好
  • 仿制网站建设写网站建设的软文
  • 0基础网站建设教程wordpress去掉rss订阅
  • 爱网站查询外贸推广具体是做什么
  • 商务网站价格找人做效果图那个网站
  • 上传到网站租一个服务器要多少钱
  • 网站制作服务合同安徽建设工程信息网文件
  • 成都企业网站建设公司正规的跨境电商平台有哪些
  • 中山工程建设信息网站网站监控系统
  • 个人网站想添加支付功能怎么做北京二次感染最新消息
  • 上海注册汽车租赁公司网站模板对seo的影响
  • 上海松江做网站公司wordpress 网站暂停