.NET程序开发=物件导向程式开发
1)物件(客观存在的实体,相当于对象)
一个物件应该能够被识别(名称)、标榜自己的特性(属性)、一些特定的动作(方法)另在.NET 里所有物件的行为就像是物件一样
物件参考:物体变数存放物体的参考,而不是物体自己,除非明确指出是在复制,否则物体不给予 复制
2)资源收集器
.NET不用自己摧毁物件,使用资源收集器(Gc)来摧毁,于是就有了资源收集器这个机制
特点:好用的机制;不需要开发人员做记忆管理工作;
降低Run-time Error;但是在大的物件前最好自己立即将资源释放
3)装箱(boxing)
对值类型临时添加引用类型的“箱子”
备注:实质型虽然可以看作物件但并不是object
值类型有:char、integer、long、single、double、decimal。。。。。。
1)字段:声明类的成员变量,获得数据,证明变量的存在
2)属性:用来修改字段,以方法的方式提供类似field的存取功能。对数据是有保护作用的,有两个方 法get只读;set只写
3)方法:用来执行一些动作的程式
4)建构式初始化类别(就是静态初始化值):应注意事项一个类,只可以有一个静态构造函式静态构造 函式不可以有存取修饰词 (public, protected 等)不可 以有参数;不可以直接呼叫该函式
5)数据的保护:即共有还是私有权限的设置
备注:如果没有声明字段便进行数据的设定是不正确的
是什么
即被所有类别的执行体共同应用的成员,不需要建立类别的实体,既可以直接存取公用的成员
什么时候用
该资料是用于全域时,用于独立的模组时;
了解两个概念:
1)列举型别:当需要定义一组常数时就可以使用列举
2)模组:即所有成员共用的类别
为物件提供复制的方法,没有直接复制的方法而是需要自己构造。有浅复制(Shallow Copy)和深复制(DeepCopy),那么他们有什么区别呢?
举个例子:
深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。举个例子,一个人名叫张三,后来用他克隆(假设法律允许)了另外一个人,叫李四,不管是张三缺胳膊少腿还是李四缺胳膊少腿都不会影响另外一个人。比较典型的就是Value(值)对象,如预定义类型Int32,Double,以及结构(struct),枚举(Enum)等。
浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,可是还是同一个人,不管是张三缺胳膊少腿还是李四缺胳膊少腿,都是这个人倒霉。
<strong><span style="font-size:18px;">//浅拷贝 publicobject Clone() { return this.MemberwiseClone(); } //深拷贝 publicobject DeepClone() { Person newP = new Person(); newP.PName = this._PName; newP.pSex = this.pSex; return newP; } </span></strong>
浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用.
深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.
总结:开始看到这个标题的时候很发懵,物件导向什么东西,类别又是什么西查了一下知识台湾和大陆叫法不一样而已,物件导向就是面向对象,之前所学的面向对象的技术都是适用的,此次新知道的有资源回器,boxing两种新机制,其次类别就是类,类包括什么与Vb、软工中学到的基本是一致的,之前在C#时字段与属性的疑惑时有了新的理解,最后就是浅复制和深复制,浅复制便是基本只是复制了类型和引用,而深复制便是全部复制成一个独立的对象