C#中的数据类型— 04

一、值类型和引用类型

C#中的数据类型主要分为值类型引用类型这两种,其中指针类型只是在unsafe的上下文中才会出现。

1、值类型变量
  1. 值类型的变量总体有 6 6 6种,分别为:整型浮点型字符型(char)布尔型(bool)枚举型(enum)结构体型(struct)等。
  2. 其中枚举型(enum)结构体型(struct)为两种自定义的值类型。
  3. 其中整型可以细分为 8 8 8种,按表示数值的范围由小到大依次为:byte,sbyte,short,ushort,int,uint,long,ulong
    在这里插入图片描述
  4. 其中浮点型可以细分为 3 3 3种,按表示数值的范围由小到大依次为:float,double,decimal
    在这里插入图片描述
  5. 值类型变量声明后,不管是否已经赋值,编译器都会为其分配内存,其存储在栈中。
2、引用类型变量
  1. 引用类型变量共有 5 5 5种,分别为:类(class)字符串(string)数组委托(delegate)接口类型
  2. 在声明引用类型的变量时,该变量的初始值为 null
  3. 引用类型变量必需要使用new运算符显式创建对象的实例,其值存储在堆中。
  4. 当为该变量分配已经在其他位置使用new创建过对象时,该引用对象的值将发生改变。
  5. 引用类型变量由于可以被多个对象引用,且其只是对象值的一个引用,而不是值本身,因此可能会被别的对象修改其值。

二、两种类型总结

1、区别
  • 值类型存储在内存的栈中,引用类型存储在内存的堆中
  • 值类型存取速度快,引用类型存取速度慢
  • 值类型表示实际的数据,引用类型表示指向内存堆中的指针或者引用
  • 值类型继承自System.ValueType,引用类型继承自System.Object
  • 栈的内存分配自动释放;而堆在C#中需要GC释放
  • 引用类型需要两段内存:第一段存储实际数据,它位于堆中;第二段是一个引用,指向数据在堆中存放位置。
    ​​​​​​​​在这里插入图片描述
2、注意
  • C#bool类型不能转换成 int

​​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值