zoukankan      html  css  js  c++  java
  • 结构体和类

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

    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.和类一样可以继承自接口

    【版权所有@ithuo】 【博客地址 http://www.cnblogs.com/ithuo】 可以转载,但请注明出处并保持博客超链接,有不正确的地方请不吝赐教,谢谢大家的帮助与支持!
  • 相关阅读:
    001 Python网络爬虫与信息提取 课程前序
    004 JQuery (010
    Vuex的元素对象
    003 JQuery (009
    002 JQuery (004
    001 JQuery (001
    Vuex简介
    axios实例与模块封装
    axios拦截器
    015 Javascript(152
  • 原文地址:https://www.cnblogs.com/ithuo/p/4665868.html
Copyright © 2011-2022 走看看