ref和out

ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:

 
1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
 
4、ref不需要关心函数体中发生了什么,函数体对ref透明。而out却不是,在函数体中不能将没有赋值的out参数赋值给其他成员,在函数退出前必须对out参数赋值。
 
例子:
using UnityEngine;
using System.Collections;
public class TestRefAndOut : MonoBehaviour {
 // Use this for initialization
 void Start ()
 {
        int m = 0;
        Debug.Log("refFun test c="+refFun(1,ref m));   //1
        Debug.Log("refFun test m=" + m);  //123
        int n;
        Debug.Log("outFun test c=" + outFun(1, out n));  //123
        Debug.Log("outFun test n=" + n); //123
 }
 
    private int refFun(int i,ref int j)
    {
        int k = j;
        j = 123;
        return i + k;
    }
    private int outFun(int i, out int j)
    {
        //int k = j;  //直接报错的
        j = 123;
        return i + j;
    }
}

  

posted @ 2015-10-22 14:56  will.Deng  阅读(139)  评论(0编辑  收藏  举报