2012年7月25日

c#中结构体和类的比较

摘要: 区别:结构是一种用关键字struct声明的自定义数据类型。与类相似,也可以包含构造函数,常数,字段,方法,属性,索引器,运算符和嵌套类型等,不过,结构是值类型。1.结构的构造函数和类的构造函数不同。 a.结构不能包含显式的无参数构造函数。结构成员讲自动初始化为它们的默认值。 b.结构不能包含以下形式的初始值设定类:base(argument-list);2.对于结构中的实例字段成员,不能在声明时赋值初始化。3.声明了结构类型后,可以使用new运算符创建构造对象,也可以不使用new关键字。如果不使用new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。4.结构不支持继承,即一个结构 阅读全文

posted @ 2012-07-25 16:42 意扬 阅读(348) 评论(0) 推荐(0)

.net中装箱的几种情况

摘要: 本篇所写都是本人想当然的理解。如果这种理解便于帮助你理解一些知识的话,我会感到由衷的欣慰。.net中虽然没有指针语法,但是在堆中分配对象,将引用放在栈中,十分类似C++中的指针操作,此时引用就可以看成一种特殊的指针。因为指针操作的间接性,会带来一定的性能影响,为了避免这种影响,.net采取了一种折衷的办法,引入了值类型。为了在值类型和引用类型之间进行一些合理的转换,于是带来了装箱和拆箱。装箱简单来说就是将值类型转换为引用类型。按三步进行: (1)新分配托管堆内存(大小为值类型实例大小加上一个方法表指针和一个SyncBlockIndex)。 (2)将值类型的实例字段拷贝到新分配的内存中。 (3) 阅读全文

posted @ 2012-07-25 11:31 意扬 阅读(351) 评论(0) 推荐(0)

导航