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

结构体

时间:2015-08-08 19:51:10      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

  结构体与我们之前学的类特别的相似
 
一、定义结构体的语法
      struct 结构体的名字
      {
           
      }
二、定义的位置:
      和类一样,定义在命名空间下面。结构体中可以定义字段、还可以定义方法、属性、构造函数
 
三、结构体与类的区别
      a、从语法上的区别
            1).类使用class关键字声明,结构体使用struct关键字声明
            2).可以为结构体声明字段,但是在声明字段的同时不能为其赋默认值。
            3).属性与类中的属性一样,用来保护字段的,这个和类中的属性没有区别。
            4).方法同样的表示一个功能,与类中的方法没有任何区别。
            5).无参数的构造函数无论如何都会被C#编译器自动生成,所以不允许程序员为结构体写一个无参数的构造函数。
            6).要求在结构体的构造函数中,必须要为当前结构体对象的每一个字段赋值。
      b、创建对象
             在创建结构体对象的时候,可以像类那样使用new关键字来创建。也可以不使用new关键字来创建。
             通过new关键字创建对象以后,这个对象的每一个字段就已经有值了。那么我们就可以直接的使用。
             因为通过new关键字创建对象,调用了构造函数。而在构造函数中又必须要为每一个字段赋值。我们可以猜出,无参数的构造函数中做的事情:为值类型的字段赋值0,为引用类型的字段赋值null。
              如果不使用new关键字来创建对象,那么这个结构体对象的字段是没有值的,要求在使用字段的值之前,必须为这些字段赋值。因为这种方式创建结构体对象,没有调用构造函数,而在声明字段的时候又不允许赋值。所以这样创建对象字段是没有值的。
 
四、结构体与类本质上的区别
      a、结构体是一个值类型,类是引用类型。
      b、结构体的变量本身就是一个对象,其中不像类那样存储地址。真正的结构体对象直接存储在这个结构体的变量中。结构体对象的成员直接存储在结构体变量中。
           在声明结构体变量的时候,其实就已经在结构体变量中创建好对象。new关键字仅仅调用构造函数。
      c、结构体相互赋值的时候,是逐个拷贝字段的值。
 
五、什么时候使用结构体呢?
      a、栈空间比较小,但是访问速度较快。堆空间比较大,但是访问速度较慢。
      b、结构体对象是分配在栈空间的,所以结构体对象的访问速度比堆空间中的类的对象要快。
      c、当我们要表示一个轻量级对象的时候,其中的成员较少。就可以将其声明为结构体。这个时候访问速度较快。
           重量级对象当成员比较多的时候,就声明为类,让对象分配在堆空间中。
 

 

结构体

标签:

原文地址:http://www.cnblogs.com/huanhuan0624/p/4713629.html

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