ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:
1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。
2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。
3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
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; } }