码迷,mamicode.com
首页 > 其他好文 > 详细

结构体和类

时间:2015-07-21 23:43:01      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

结构是值类型,但在语法上常常当做类来处理

struct typeNum
{
   public string a="hello";
   public string b="world";
}

如果仅需要一个小的数据结构,可以考虑用结构,因为结构在性能上比类略佳。

结构不支持继承,在使用前必须先初始化结构是会影响性能的值类型,但根据使用结构的方式,这种影响可能是正面的,也可能是负面的。

正面的影响是为结构分配内存时,速度非常快,因 为它们将内联或者保存在栈中。在结构超出了作用域被删除时,速度也很快。负面影响是,只要把结构作为参数来传递或者把一个结构赋予另一一个结构如 A-B,其 中A和 B是结构),结构的所有内容就被复制,而对于类,则只复制引用。 这样就会有性能损失,根据结构的大小,性能损失也不同。

类和结构体的不同点: 

  1.关键字不同 一个是class,一个是struct

  2.类型不同,一个是引用类型,一个是值类型(存储:一个堆区,一个栈区)。关于值类型和引用类型以及堆与栈详细可见

  3.成员不同,结构体没有默认的构造函数(可以添加)和没有析构函数,不可以使用abstract,protected,sealed修饰

  4.Struct变量使用完之后就自动解除内存分配,Class实例有垃圾回收机制来保证内存的回收处理

  5.继承性。结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口

  6.在结构体中可以声明字段,但是声明字段的时候是不能给初始值的.

  7.实体类中如果我们没有显示的定义构造函数,那么会有一个隐式无参的构造函数(重载构造函数之后,需要显示声明无参构造函数),

    而在结构体中隐身无参的构造函数无论如何都存在

  8.在类中可以显示的定义无参的构造函数,而在结构体中我们不能显示的定义无参的构造函数

  9.结构体是可以New的,而结构体构造函数要求必须要为所有的字段赋值.即使是无参的构造函数,也会给值类型赋初值为0,引用类型赋初值为null

同:

  1.都有属性和方法

  2.和类一样可以继承自接口

结构体和类

标签:

原文地址:http://www.cnblogs.com/ithuo/p/4665868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!