黑马程序员技术交流社区

标题: 值传递与引用传递的区别 [打印本页]

作者: 魏庆君    时间: 2012-8-11 10:04
标题: 值传递与引用传递的区别
请教:什么时候用到的是值传递,什么时候用到的是引用传递,一直都没有弄清楚
作者: 来明坤    时间: 2012-8-11 10:18
当实参当作值来传递时,就产生了一个新的拷贝。
[c-sharp] view plaincopyprint?
class Test  
   {  
       static void Main(string[] args)  
       {  
           int x=8;  
           Fo(x);  
           Console.WriteLine("x={0}", x);  
       }  
      
       static void Fo(int p)  
       {  
           p = p + 1;  
           Console.WriteLine("p={0}", p);  
       }  
   }  

程序运行结果为:p=9,x=8;即X的值不会受P影响,给P赋一个新值并不会改变X的内容,因为P和X存在于内存中不同的位置。

同理,用传值的方式传递一个引用类型对象时,只是复制这个对象本身,即复制其地址值,而不是它指代的对象。下面代码中Fo中看到的StringBuilder对象,就是在Main方法中实例化的那一个,只是有不同的引用指向它而已。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2