C#值引用以及值引用
作者:互联网
引用类型: 引用类型变量的值为一串地址,变量存储在栈中,变量的数据存储在地址所指向的堆空间中。
值类型: 值类型变量和变量的数据都是存储在栈中。
当值类型的变量作为函数的形参时:
在函数内部对形参的值进行修改,是不会改变外部实参的值,若想改变需用ref关键字来修饰。
当引用类型的变量作为函数的形参时:
函数内部对形参的值进行修改,可以改变外部实参的值,因为引用类型在传参时,是将变量的地址给了形参,当形参被修改时,意味着其地址所指向的堆空间中的值被修改了,此时外部实参也指向的该地址所指向的堆空间,因此间接的对外部实参的值进行改变。
当string类型的变量作为函数的形参时:
而string类型比较特殊,string类型是引用类型,但是在函数内部是无法修改外部实参的值的,因为string类型的变量在被赋予新值的时候,不会将原值擦去而填上新的值,而是会在堆中重新开辟空间,在空间中放入新的值,从而变量的地址也会改变,变成新空间的地址。
综上所述,当string类型在传参时,形参会和实参的值一样,都是存的同样的地址,而地址都是在堆中指向同一空间,当在函数内部对形参的值进行修改时,此时形参的值变了,形参所存的的地址也变了,而外部实参的地址还是原来的地址,因此在堆中还是指向原来的空间,并未修改它的值,因此string类型无法在函数内部修改外部的值。
标签:变量,以及,C#,参时,地址,引用,类型,实参,string 来源: https://www.cnblogs.com/hangmei/p/16230015.html