侧边栏

C#值引用以及值引用

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

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

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

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

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

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

posted @   我有我的骄傲  阅读(447)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示