12 2013 档案
摘要:装箱和拆箱的过程是:装箱就是,在托管堆里面分配新建对象内存,将值类型拷贝到该内存中,返回新对象的地址,拆箱就是,在托管堆里面找到属于值类型的指针,并将托管堆里面的数据返回给值类型(返回已经装箱对象中属于值类型备份的字段地址),拆箱和装箱并不是完全对等互逆的,拆箱的想能开销远小于装箱,只有装箱过得对象才可以拆箱,将没有装箱过得引用对象拆箱会报错真正的拆箱是不包括字段的拷贝的,(但是在通常情况下在拆箱之后都会紧跟着一个字段拷贝的操作“一般是赋值”)拆箱和装箱主要是对值类型而言的,因为引用类型总是以装箱形式存在的拆箱和装箱分为,显示转化和隐式转化拆箱和装箱会带来很大的性能问题泛型可以大大的避免拆箱和
阅读全文
摘要:参数按照调用方式可以分为,形参和实参,形参就是被调用方法的参数,实参就是调用方法的参数Params可变参数,其实是一个特写,修饰的必须是一维数组,修饰的数组可以是任意类型,必须放在所以参数的最后面,只能使用一次传递方式分为,值类型参数的按值传递,引用类型参数的按值传递,值类型参数的按引用传递,引用类型参数的按引用传递值类型和引用类型在参数传递的时候传递的都是类型在堆栈上面的拷贝,只是值类型在堆栈上面的拷贝就是本身数据的拷贝,而引用类型在堆栈上面的拷贝是引用类型执行托管堆上面的地址,不管是值类型还是引用类型,俺引用传递必须以ref或者out关键字来修饰Ref和out可以重载方法按值传递和按址传递
阅读全文
摘要:Equals,是Object的一个虚方法值类型system.ValueType重写了object用于对实例数据的判等对值类型应用ReferenceEquals用于返回为flalse(ReferenceEquals只能用于引用类型)==默认的是比较引用地址通过重载可以比较实例数据,比如字符串比较==和Equals方法的主要区别在于多态表示形式上,==是被重载,Equals是覆写除了string类外的其他基元类型都有parse用于吧字符串转换为基元类型使用explicit或者implicit进行用户自定义类型转化
阅读全文
摘要:区别:1.值类型继承valueType而valueType继承Object,引用类型继承Object2.值类型内存不由GC控制,而引用类型的内存有GC控制3.值类型是密封的,不能作为其他类的基类,,而引用类型可以4.值类型不能实现继承,只能继承接口,而引用类型可以实现继承5值类型不具有多态,而引用类型有多态6.值类型不可能为null,会被初始化为0,引用类型是null(表示不指向任何托管堆地址) public class ValTyIn { public string str { get; set; } public static void MothDow() { char cstr =
阅读全文
摘要:看引用类型传值和加了ref的引用类型传值的区别(按值传递和按引用传递的IL区别)1.这种是一般的没有用ref传值的public partial class hellowordle : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { List stin = new List(); stin.Add(new prod() { id = "1", name = "111" }); stin.Add(new prod() { id = "2"
阅读全文
摘要:代码看值类型和引用类型的一个区别 public class MyClass1 { } public struct Mystruct { } public class ILDemo { MyClass1 Mc = new MyClass1(); Mystruct Ms = new Mystruct(); }.method public hidebysig specialname rtspecialname instance void .ctor() cil managed{ // 代码大小 31 (0x1f) .maxstack 8 IL_0000: ldarg.0 IL_0001: newob
阅读全文
摘要:.assembly 用于指定编译目标或则外部加载库(.assembly只加载实际用到的目标或者库).Ctor 指令表示构造函数.Ver表示引用版本.publicKeytoKen公钥.Hash algorithm 表示现实安全性使用的哈希算法.module程序集指令表明定义的模块的元数据,指当前模块.imagebase 为影像基地址.file alignment为文件对其数值.subsystem表示连接系统类型(运行方式).corflags为设置运行库头文件标志.class 表示是一个类extends继承指向auto表明加载的时候内存是有clr决定ansi指示没有运行在clr运行库上面的代码be
阅读全文
摘要:接口什么是接口:接口就是一个契约,一个对于类的行为约束接口的本质InterFace ImyInterface{Void MyMethod();}编译成IL语言就是:.Class Private interface abstract auto ansi ImyInterface{.method Public hidebysig newslot abstrct virtual instance void MyMethod() cilmanaged}从上面的代码可以看出,接口在编译后实际上是被编译成了,一个抽象类, 而接口里面定义的方法是被编译成了,一个虚拟的禁止为已经发布的接口添加新的成员,因为这
阅读全文
摘要:多态什么是多态,多态就是调用不同的类的相同方法实现不同的行为多态根据实现的方式我们可以进一步分为,基类继承试多态和接口实现试多态Net的方法多态绑定机制成就了面向对象的的多态特性程序说明 enum FileType { doc, pdf, txt, ppt}interface IFileOpen { void Open();}abstract class Files : IFileOpen { private FileType fileType; public FileType FileType { get { return fileType; } } public abstract void
阅读全文
摘要:封装(字段:表示类状态信息,属性:表示类的对外成员,方法:提供了类的对外表现)封装的第一个原则就是字段应该定义为privateNet有了字段为什么还有有属性:因为字段是表示类的状态信息,如果吧字段声明为Public开放给外部,哪就不能很好的保证字段信息的合法性,但是我们又想保证吧类的信息开放给外部供外部读取修改,又想保证类信息的合法性,哪该怎么做?,在这个需求上面就诞生了属性,可以通过属性隔离外部读写字段信息,过滤字段信息,属性一般都是public的,通过IL分析我们可以看出,属性的set,get在编译的时候就是生成了get(),set(object)方法属性降低了字段修改对外部的影响,比如我
阅读全文
摘要:继承继承就是面向对象中类与类之间的一种关系继承按着实现方式的不同一般分为两类,实现继承(直接继承其他的类),接口继承(继承只接口)CLr支持实现单继承和接口多继承子类中实现父类虚方法的方式叫做方法的动态绑定生命对象Bird bird=new Bird();这个过程发生了什么Bird bird这个是创建一个Bird的引用New Bird()创建一个Bird的对象,并且初始化这个对象,分配内存空间,然后把这个对象引用赋给bird变量,建立bird和Bird的关系对象初始化的时候,会先找到他的父类,为其父类分配内存空间,而父类还会去找更上层的父类分配内存空间,一直类推到system.object为止
阅读全文
摘要:对象描述:1.一个对象的诞生和一个人诞生一样,一个对象的诞生就是给对象在内存中分配一个空间,然后调用构造函数初始化对象的基本属性(给对象一个特有的标记),2.和人的行业(工人,农民。。。)一样对象也有类型(整形,字符型。。。),常见的分类是 值类型和引用类型,值类型是存储在线程的堆栈里面,而引用类型是存储在托管堆里面,有值类型转化为引用类型是装箱,而有引用类型转化为值类型是拆箱3.和人一样对象和对象之间也有形形色色的交互,也有生存环境,CLR就是对象的生存环境,CLR为对象提供了赖于生存的托管环境4.,对象就是在一定的约束和规则(接口)下,通过方法进行交互,来改变自身(获取信息,提供信息)对象
阅读全文

浙公网安备 33010602011771号