ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#值引用以及值引用

2022-05-06 19:00:30  阅读:130  来源: 互联网

标签:变量 以及 C# 参时 地址 引用 类型 实参 string


引用类型: 引用类型变量的值为一串地址,变量存储在栈中,变量的数据存储在地址所指向的堆空间中。

值类型: 值类型变量和变量的数据都是存储在栈中。

当值类型的变量作为函数的形参时:
在函数内部对形参的值进行修改,是不会改变外部实参的值,若想改变需用ref关键字来修饰。

当引用类型的变量作为函数的形参时:
函数内部对形参的值进行修改,可以改变外部实参的值,因为引用类型在传参时,是将变量的地址给了形参,当形参被修改时,意味着其地址所指向的堆空间中的值被修改了,此时外部实参也指向的该地址所指向的堆空间,因此间接的对外部实参的值进行改变。

当string类型的变量作为函数的形参时:
而string类型比较特殊,string类型是引用类型,但是在函数内部是无法修改外部实参的值的,因为string类型的变量在被赋予新值的时候,不会将原值擦去而填上新的值,而是会在堆中重新开辟空间,在空间中放入新的值,从而变量的地址也会改变,变成新空间的地址。

综上所述,当string类型在传参时,形参会和实参的值一样,都是存的同样的地址,而地址都是在堆中指向同一空间,当在函数内部对形参的值进行修改时,此时形参的值变了,形参所存的的地址也变了,而外部实参的地址还是原来的地址,因此在堆中还是指向原来的空间,并未修改它的值,因此string类型无法在函数内部修改外部的值。

标签:变量,以及,C#,参时,地址,引用,类型,实参,string
来源: https://www.cnblogs.com/hangmei/p/16230015.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有