值传递
传递的是变量在堆栈上的值的副本
值类型在堆栈上存的就是实际的值,
引用类型在堆栈上存的是一个地址,这个地址就是该引用类型在托管堆上存放的实际的值的地址
以修改文件为例,
值类型的值传递,就好比先复制一份该文件,然后再对复制后的文件进行修改
引用类型的值传递,就好比传递的是快捷方式的副本,然后通过这个副本找到文件,再进行修改,这里一定要注意,传递的依然是副本!!!!!!!!!!也就是说,传递的是地址的副本!!
string类型比较特殊,因为字符串具有不可变性,
所以在string类型变量值传递的时候,会在托管堆中新开辟一块内存,然后将新地址赋值给形参,而实参指向的地址不变.
因此,string类型变量值传递的效果和值类型一样
引用传递 ( ref / out)
传递的是变量在堆栈上的地址
对于引用类型而言,这个地址就相当于是引用的引用