ref out 的用法小结

来源:互联网 发布:电脑盲打软件 编辑:程序博客网 时间:2024/06/01 08:31

 

        1.在传送值类型时: 在传送参数给方法的时候,对于值类型的参数,在方法里面对参数所做的所有修改,在方法结束后不会改变原来的值(就是传值)。如果前面加上ref的话,方法结束后,所做的修改会改变原来的值(就是传引用)。


calss Test
{
  
public void NoRef(int i)
  
{
   i 
= 102;
  }

    
public void Ref(ref int i)
      
{
           
int i =200
       }

  
static void Main()
  
{
    
int i = 100;
   NoRef(i);
   Console.Write(i);
//结果是100
    Ref(i);
   Console.Write(ref i);
//结果是200
   }

}

 2. 传送引用类型: 对于这个大家就比较好奇了,在值类型里面本来就是传引用,用不着加ref,加了它有什么用 呢。我也是刚知道。看下面代码吧

class People
{
int age = 30 ; 
}

class Test1
{
   
public void NoRef1(People p)
   
{
      p.age 
= 40;
    }

  
public void NoRef2(People p)
   
{
      p 
= new People()
      p.age 
= 50;
    }

   
public void Ref(ref People p)
   
{
     p 
= new People()
      p.age 
= 60;
    }


   
static void Main()
   
{
People p 
=new People();
      NoRef(P);
Console.Write(p.age);
//40
NoRef2(P);
Console.Write(p.age);
//40
Ref(out P);
Console.Write(p.age);
//60
   }

}

在没有使用ref的情况下,在方法里面new 一个对象,这个对象的值就不会影响到原来的值。如果使用了ref,new完以后所做的修改,还是会影响原来的值。

3 。out 的用法基本上和ref差不多,所不同的是,用out 的时候,传入的参数可以不初值化。