美文网首页软件开发
值类型与引用类型

值类型与引用类型

作者: qing00xin | 来源:发表于2018-06-20 16:35 被阅读10次

什么叫值类型?(或者说值类型有哪些特点?):

直接将内存存储在栈内,由系统自动释放资源的数据类型.

有 整型:Int; 长整型:long; 浮点型:float; 字符型:char; 布尔型:bool; 枚举:enum; 结构:struct;

在C#中所有的值类型都继承自:System.ValueType.

基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

什么叫引用类型?

有以下一些引用类型:

数组(派生于System.Array);

用户自定义的以下类型::class(派生于System.Object);接口:interface;委托:delegate(派生于System.Delegate);object(System.Object的别名);字符串:string(System.String的别名)。

我们来看一段代码:

代码

实例化值类型与引用类型之后,输出结果,当改变类和结构中的成员变量时,再输出结果

结果

我们看到当改变ref2和value2中x和y的值时,ref1中的x也跟着改变,而value1中的y并没有跟着改变,看图例

类似图例

值类型赋值时会重新在栈中开辟一块包含相同值的内存空间,而引用类型赋值时值存储在堆中,只是在栈中复制了一份对堆中对象的引用(内存地址,指向堆中值), value1和value2这两个地址指向的是同一个堆中的值,所以x会改变,y不会改变

相关文章

  • javascript复习笔记一(变量类型与计算)

    变量类型:分为值类型与引用类型 一、值类型与引用类型 值类型:存储的是具体的值(undefined、Boolean...

  • JavaScript中的浅拷贝与深拷贝

    值类型与引用类型 谈浅拷贝与深拷贝之前,我们需要先理清一个概念,即值类型与引用类型。 什么是值类型与引用类型?这要...

  • 深拷贝与浅拷贝

    一.引用类型与值类型 我们都知道,js有两种基本类型,引用类型与值类型。引用类型的“=”只是拷贝了引用,而基本类型...

  • Note 3 Swift (1)

    Swift学习笔记 变量与常量 变量 常量 值类型与引用类型 值类型 引用类型 数组与字典 数组 字典

  • C#中数据到底存在堆上还是栈上

    C#的栈与堆 首先复习一下值类型与引用类型 1. 值类型与引用类型 值类型:基本数据类型([int,long,fl...

  • 装箱拆箱Day0817

    //值类型和引用类型之间的转换称为装箱与拆箱 //装箱是值类型转化为引用类型 //拆箱是引用类型转化为值类型 in...

  • JS基本类型、引用类型梳理

    原始值类型与引用值类型 ECMAScript规范中定义了变量的两种类型:原始值类型和引用值类型。区别两种类型的直接...

  • Js基础知识-变量类型

    JS值类型与引用类型 值类型 string number boolean symbol underfind 举例 ...

  • 一.C#中值类型与引用类型

    总结:值类型直接存储其值,引用类型存储对值的引用,值类型存在堆栈上,引用类型存储在托管堆上,值类型转为引用类型叫做...

  • GeekBand-Swift 第一周笔记(值类型与引用类型的区别

    值类型与引用类型的区别 暂且把值类型看做 struct(结构),引用类型看做 class(类) struct在栈上...

网友评论

    本文标题:值类型与引用类型

    本文链接:https://www.haomeiwen.com/subject/yxexyftx.html