值类型和引用类型的区别?

 我来答
IT168
2022-11-07 · 百度认证:IT168官方账号,优质数码领域创作者
IT168
IT168是中国最大的个人和企业IT产品选购、互动网站,每日提供最新的IT产品报价、促销行情、手机、平板、笔记本、相机和企业等50个频道提供最专业的产品选购和使用建议。
向TA提问
展开全部
(1)值类型:数据存储在内存的堆栈中,从堆栈中可以快速地访问这些数据,因此,值类型表示实际的数据。
(2)引用类型:对象、数组、函数。

1、值类型:包括:sbyte、short、int、long、float、double、decimal(以上值类型有符号)byte、ushort、uint、ulong(以上值类型无符号)bool、char
2、引用类型:包括:对象类型、动态类型、字符串类型。二、具体区别:
1、值类型:byteb1=1;byteb2=b1;Console.WriteLine("{0},{1}。",b1,b2);b2=
2;Console.WriteLine("{0},{1}。",b1,b2);Console.ReadKey();解释:byteb1=1;声明b1时,在栈内开辟一个内存空间保存b1的值1。byteb2=b1;声明b2时,在栈内开辟一个内存空间保存b1赋给b2的值1。Console.WriteLine("{0},{1}。",b1,b2);输出结果为1,1。b2=2;将b2在栈中保存的值1改为
2。Console.WriteLine("{0},{1}。",b1,b2);输出结果为1,2。
2、引用类型:复制代码。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
百度网友b869fe227
2021-07-01
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

值类型、引用类型区别:

    值类型内容存储在(栈)上。引用类型指针存储在(栈)上,内容存储在(堆)上。

    值类型和引用类型最大的不同是:传递的效率和影响:效率指:软件运行时,复杂功能在大量运算,毫秒级上内存一直在复制和分配,一组数据的值拷贝和指针拷贝,cpu性能和内存表现差异大,影响指:修改方法里的数据会不会影响到方法外的数据对象。

    值类型=其他变量时是复制内容(替换栈内容),引用类型=其他变量时是替换指针(替换栈指针)。

    值类型赋值时(例=1)是替换内容(替换栈内容),引用类型=new时是新分配内存(新分配堆内存)和替换指针(替换栈指针)。

    值类型在方法传递参数过程中是复制1份内容(新分配栈内容),引用类型在方法传递过程中是复制1个指针(新分配栈指针),指向同1个内容,内容没复制。

    值类型在方法里修改不影响方法外变量,引用类型在方法里修改,因为指向同1个内容,方法外的值也同步变化。

字符串是特殊的引用类型:

    字符串是特殊的引用类型,每次=新字符串实际都改变一次栈指针(新分配堆内存,替换栈指针),而没有改变值。

    字符串传给方法是1个指针(新分配栈指针)。方法内=新字符串是替换方法内的指针(替换新栈指针),不影响方法外的指针(不影响原栈指针),所以表现看过去与值传递一致。

结构体struct值类型、class引用类型区别:

 结构体struct是值类型,但是结构体中的字符串、数组、类存放的是指针,和值一起存在栈上。

   所谓值类型, 结构体的表现就是传给方法是复制1套指针和1套值,在方法内修改结构体1级属性(修改结构体字符串、new数组、new类)改的是方法内结构体的指针(1级指针),无法改变方法外结构体的指针,所以不影响方法外的结构体,但是修改数组内数据和类属性会影响方法外的结构体(因为改的是1级指针指向的内容)。

    class是引用类型,传给方法是1个指针。方法内替换属性会影响方法外的对象(因为修改的是指针指向的内容)。但是方法内再次=new对象是替换方法内的对象指针,不影响方法外的对象,再替换属性就不影响方法外的对象。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2018-02-28
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。
声明一个值类型变量,编译器会在栈上分配一个空间,这个空间对应着该值类型变量,空间里存储的就是该变量的值。引用类型的实例分配在堆上,新建一个引用类型实例,得到的变量值对应的是该实例的内存分配地址,这就像您的银行账号一样。
具体哪些类型是值类型哪些是引用类型,大家翻翻书,背一背就好了,不过我想,做过一段时间的开发,即使您背不了书上教条的定义,也不会把值类型和引用类型搞混的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
允忆枫s7
2012-05-06
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
C# 支持两种类型:“值类型”和“引用类型”。
值类型(如 char、int 和 float)、枚举类型和结构类型。
引用类型包括类 (Class) 类型、接口类型、委托类型和数组类型。
值类型与引用类型的区别在于值类型的变量直接包含其数据,而引用类型的变量则存储对象引用。对于引用类型,两个变量可能引用同一个对
象,因此对一个变量的操作可能影响另一个变量所引用的对象。对于值类型,每个变量都有自己的数据副本,对一个变量的操作不可能影响另一个变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7453d1795
2012-05-06
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
最大的区别是赋值的时候,
值类型,是变量的值,进行复制。
引用类型,是地址值在相互赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式