• C# struct 与 class 与 enum 的区别


    本质区别
    class 是引用类型
    struct 是值类型

    什么是class–类
    class 是面向对象编程的基本概念,是一种自定义数据结构类型,包含:字段,属性,构造函数,方法,索引器,操作符等。c#中所有的类继承自System.Object类,因此是一种引用类型,所以当new 一个对象时,对象保存了实例对象的实际数据的引用地址,而队像的值保存在托管堆中

    什么是struct–结构
    struct 是一种值类型,用于将一组相关信息的变量,组成一个单一的变量实体(化零为整),结构继承System.ValueType类,所以是一种值类型,struct 实例分配在线程的堆栈上(stack),他本身存储了值,但是没有该值的指针,所以struct 可以当做int,char,这样的基本类型类对待

    值类型和引用类型

    相同点与不同点
    一)相同点:语法类似
    二)不同点:
    1.class是引用类型,继承自System.Object ; struct是值类型,继承自System.ValueType类,不具备多态
    2.class 表现为行为方法。struct常用语数据存储。
    3.class支持继承,可继承 类,接口;struct没有继承性,不能作为class基类,但支持接口继承
    4.class支持生命无参构造函数,析构函数;struct只支持 有参构造函数
    5.实例化,class使用new声明,struct不需要,
    6.class可以实现抽象类,可以声明抽象函数,struct为抽象,不能声明抽象函数
    7.class实例由垃圾回收机制来保证内存的回收处理,struct在使用完后自动解除内存分配。
    8.作为参数传递,class以地址方式传递,struct以值的方式传递

    enum.–枚举
    由一组成为枚举数列表的命名常数组成的独特类型,每种枚举类型都有基础类型,该类型是可以除char以外的任何整型,枚举元素默认基础的类型为int。默认情况下第一个枚举数值为0,后面枚举数的值一次+1 :

    1 enum Days
    2 {
    3      Monday = 1, Tuesday, Wenesday, Thurday, Friday, Saturday,                 
    4      Sunday
    5 }

    枚举的作用:
    1.限制用户不能随意赋值,只能在定义枚举的时候列举的值总选择

    2.不需要死记每一值是什么,只需要选择相应的值

  • 相关阅读:
    .net NEST7.17.0 ES客户端帮助类
    .net5 根据类型注入所有的继承关系
    ANSI控制码 cmd echo设置字体、背景色、前景色
    windows racketmq部署
    c# 运行时判断是否为DEBUG模式
    .net minio 帮助类 minio4.0.1
    获取解决方案中所有的程序集
    spoonweb保存400问题解决
    关于kettle环境初始化 KettleEnvironment.init() 报错的解决
    PythonMutableDict使用范例
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/12504566.html
Copyright © 2020-2023  润新知