天天看點

C# ref和out 關鍵字

1.三種函數調用

ref 和 out 是引用的形式傳遞參數,有别于傳統的值傳遞
private static void Main(string[] args)
{
    int _mref = ;
    int _mout ;
    int _m    = ;
    MethodRef(ref _mref);
    MethodOut(out _mout);
    Method(_m);
}

public static void MethodRef(ref int a){print(a);}
public static void MethodOut(out int a){a = ;print(a);}
public static void Method(int a = ){}
           

2.差異比較

out

  • 傳回out修飾的變量之前,該值必須是被初始化;
  • 而在調用函數之前該變量無需初始化;
  • 允許傳回多個值;

ref

  • 調用函數前變量必須初始化;
  • 可用于交換函數 swap(ref int a, ref int b)

3.相同點

  • 全都是通過引用傳遞;
  • 對于CLR,ref和out除了辨別,中間代碼和中繼資料都是相同的,這導緻ref和out無法重載彼此;
  • 調用函數不可以有預設值;