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無法重載彼此;
- 調用函數不可以有預設值;