读你必须知道的.NET(四)

类(class)是面向对象编程的概念,是一种自定义数据结构类型,通常包含字段、属性、方法、构造函数、索引器、操作符等,在.NET中所有类都最终继承自System.Object类,是一种引用类型,也就是说,new一个类的实例时,对象保存了该实例实际数据的引用地址,而对象的值保存在托管堆中,其表现为行为,支持继承,可以继承自类和接口,但不能被struct继承,也不能从struct继承。

结构(struct)是一种值类型,用于将一组相关信息变量组织为一个单一的变量实体,所有结构都继承自System.ValueType类,struct实例分配在线程的堆栈上,本身存储了值,不包含指向该值的指针。两者语法类似,但struct常用于存储数据,它没有自定义的默认无参构造函数,只能声明带参构造函数,不能声明析构函数,可以继承自接口,但不能继承类或结构。

实例化时,class使用new关键字,但struct可以不用new关键字,如果不以new实例化struct,则其所有的字段将处于未分配状态,直到所有字段完成初始化,否则引用未赋值的字段会导致编译错误。

何时使用struct

实现一个主要用于存储数据的结构时,可以考虑struct;struct变量占有堆栈空间,因此只适用于数据量相对小的场合;结构数组具有更高的效率;提供某些和非托管代码通信的兼容性。

http://www.cnblogs.com/anytao/archive/2007/04/24/must_net_04.html

原文地址:https://www.cnblogs.com/Ribbon/p/2936508.html