日期:2014-05-20  浏览次数:20439 次

关于C#的引用&值传递弱弱的问几句.
学.NET也有一段时间了,对引用的几点不太明了.我理解的对不对,不能迷糊下去了
在class的方法里.我们用swap作例子.
public   void   swap(int   a,int   b)
{
      int   temp;
      temp=a;
      a=b;
      b=temp;      
}
1.按值方式传值类型==C/C++方式,将不会改变传入的a,b值
2.按引用方式值值类型==C/C++方式,即(public   void   swap(ref   int   a,ref   int   b))将改变传入的a,b值
3.按值方式传递引用类型,将交换a.b值,这点和C/C++是相反的吧.?       ---> 问题1
public   void   swap(obj   a,obj   b)
{
      obj   temp;
      temp=a;
      a=b;
      b=temp;      
}
4,按引用传递引用类型,即(public   void   swap(ref   obj   a,ref   obj   b))效果同3.造成a.b交换.

问题一:3.按值方式传递引用类型,将交换a.b值,这点和C/C++是相反的吧.?      
问题二:C#中3和4,按引用或不按引用,效率上的区别,在C/C++里,这里就是用指针会提高效率,那么C#咧?

真诚求教

------解决方案--------------------
引用传参就是传引用,值传参就是传值,当然string引用类型是例外,
值-> 引用,要boxing装箱,
引用-> 值,要unboxing拆箱,都是有性能损失的