C#中传值和传地址区别,各适合于什么情况下啊、
C#中传值和传地址区别,各适合于什么情况下用啊、 --------------------编程问答-------------------- 想在改变参数的同时也改变原变量``` 就按地址传递```如果参数是基本类型的还要使用ret关键字```反之就是按值传递```` --------------------编程问答-------------------- 是不是引用类型和值类型的区别? --------------------编程问答-------------------- 区别太明显,所以使用情况完全不同。
传值呢是在方法内对参数的修改仅在方法内有用,不会影响到调用者。而传地址则正好相反,会同时影响方法内的值和调用该方法的域的值。 --------------------编程问答-------------------- 传值就是传参数的副本,传地址是引用,直接对参数操作。 --------------------编程问答-------------------- 看你想不想改变这个参数。 --------------------编程问答-------------------- 能分别举个例子么?我看的好多结果传值和传地址都是一样 --------------------编程问答-------------------- 如果需要改变传递的参数,就用传地址,否则用传值 --------------------编程问答-------------------- private void method1(string str1,ref string str2)
{
//code here
str1+="加了一条字符串1";
str2+="加了一条字符串2";
}
如上:调用时
string a="你好!"; string b="您好!";
method1(a,b);
执行完方法后
a="你好!";
b="您好!加了一条字符串2";
也就是说传值的时候,方法内对参数的操作不影响到变量本身,而传值就会影响到变量本身! --------------------编程问答-------------------- method1(a,ref b)
刚才错了,调用的时候也要ref关键字 --------------------编程问答-------------------- 就是引用类型和值类型的区别 --------------------编程问答-------------------- 8楼的 我懂了谢谢。 --------------------编程问答-------------------- 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。
--------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 , C#