c#学习——值类型与引用类型

                   值类型与引用类型的区别

什么是值类型:

   直接将内存存储在栈内,由系统自动释放资源的数据类型。每一个值类型都有一个独立的内存区域保存自己的值,调用他的时候用的是他的值,而引用类型调用的是内存中的地址。

   例如:

   A的值是18,当把a赋给b时,系统会给b开一块新的控件保存a的值,当把b 的值改成20时就会在b的空间中保存20,与a就没有关系了,这就是值类型。

什么是引用类型?

   由类型的实际值引用(类似指针)表示的数据类型。如果为某个变量分配一个引用类型,则该变量将引用(或指向)原始值。引用类型在栈上存地址,推上存值。(下边附有堆栈的介绍)

例如:

  A=18,这时候在内存中保存的是18,当把a赋给b的时候,他们两个引用的是同一个内存空间,b的值会保存为a的值,当把b的值改成20时,因为a和b引用的是同一个内存空间,索引a的值也会变成20.这就是引用类型。

值类型和引用类型有什么区别?

  1、  将一个值类型变量赋给另一个值类型变量是,将复制包含的值,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

  2、  值类型不可能派生出新的类型:所有的值类型均隐式派生自System.ValueType。但与引用类型相同的是,结构也可以实现接口。

  3、  值类型不可能包含null值。

  4、  每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。

用存钱当例子:值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。

哪些是值类型,哪些是引用类型?


堆和栈有什么区别?

   栈:栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中。
   堆:堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存空间的大小。
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值