C# 二十四、值傳遞與引用傳遞
阿新 • • 發佈:2018-12-20
值傳遞
- 使用值傳遞時,向形式引數傳遞的是實在引數的副本,方法內發生的對形式引數的更改對實在引數本身沒有任何影響。
程式碼示例:
static void Main(string[] args) { int i = 0; Console.WriteLine(FunctionA(i)); ---> 1 Console.WriteLine(i); ---> 0 Console.ReadKey(); } static int FunctionA(int i) { i = 1; return i; }
引用傳遞
- 使用ref或out關鍵字宣告通過引用傳遞方式傳遞引數,把實在引數的地址傳給形式引數,形參和實參指向同一個儲存單元,對形參的改變就是對實參的改變。
- ref與out的區別在於:ref要求引數在傳遞之前必須初始化,out不要求初始化,但要在方法中完成初始化。
程式碼示例:
static void Main(string[] args) { int i = 0; Console.WriteLine(FunctionA(ref i)); ---> 1 Console.WriteLine(i); ---> 1 Console.ReadKey(); } static int FunctionA(ref int i) { i = 1; return i; }
static void Main(string[] args) { int i; Console.WriteLine(FunctionA(out i)); ---> 1 Console.WriteLine(i); ---> 1 Console.ReadKey(); } static int FunctionA(out int i) { i = 1; return i; }
引數分類:值引數/引用引數(ref)/輸出引數(out)