值和引用参数

 值和引用参数
  值:只是将值的一个副本传递,因此不因原变量的值。
 
引用:传递的是引用的一个副本,(对相同数据的另一个引用),因此要改变原数据(字符串另解)

 refout方法参数
  ref
正被传递的参数指向与正被调用代码中的变量的同一内存地址(在调用前对传递的参数进行初始化)
  out
同上,可以在调用之前不对参数进行初始化,但是必须在调用的方法内修改out参数
 
总结:在为out参数赋值前不能使用它,而且在从方法返回前必须为它赋值。
  
public class Class1
    {
       public Class1(){}
       protected Class1(int i){}

       public int ID;
    }

    public class myclass
    {
/*     public Class1 chaObject(out Class1 ref1)
       {
           ref1.ID = ref1.ID * 2;
           return ref1;
       }

       public Class1 chaObject(out Class1 ref1)
       {
           ref1.ID = 4;
           return ref1;
       }

       public Class1 chaObject(out Class1 ref1)
       {
           int x = ref1.ID;
           ref1 = new Class1();
           ref1.ID = x * 2;
           return ref1;
       }*/

       public Class1 chaObject(out Class1 ref1)
       {
           ref1 = new Class1();
           ref1.ID = 99;
           return ref1;
       }
    }

    public class Test
    {
       static void Main(string[] args)
       {
           myclass mc = new myclass();
           Class1 ref1 = new Class1();
           ref1.ID = 3;

           Class1 ref2 = mc.chaObject(out ref1);
       }
    }
被注释掉的地方,为编译无法通过的。
总结:如果通过值传递引用,那么就是在传递引用的副本;如果通过引用传递引用,那我们实际上是在传递原来的引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值