ref 參數:
比喻: 想像你有一個可以調整的家用電視機,你把遙控器(ref 參數)給你的朋友。你告訴他調整音量或更改頻道。當他使用遙控器時,他的調整會直接影響到你的電視機,因為他控制的是同一台電視機。
解釋: 在這個比喻中,電視機代表原始變數,遙控器代表 ref 參數。你需要在使用遙控器之前先開啟電視機(初始化變數),因為你希望他可以直接修改電視機的設置(修改變數的值)。
out 參數:
比喻: 想像你給你的朋友一個空盒子(out 參數),告訴他把一些資料放到盒子裡面(例如,放入一份文件)。當他完成後,你可以取回這個裝滿資料的盒子。你在給他盒子時並不要求他事先填入任何資料,但他必須在返回盒子之前填滿資料。
解釋: 在這個比喻中,盒子代表 out 參數。你不需要提前準備好資料(初始化),但是你的朋友必須在盒子裡放入資料(初始化 out 參數),這樣你才能拿到完整的資料(返回結果)。
特點 | ref 參數 |
out 參數 |
---|---|---|
初始化要求 | 必須在調用方法前初始化(打開電視) | 不需要在調用方法前初始化 |
使用方式 | 在方法定義和調用時都必須使用 ref 關鍵字 |
在方法定義和調用時都必須使用 out 關鍵字 |
方法內要求 | 方法內可以讀取和修改參數值 | 方法內必須對參數進行初始化 |
目的 | 主要用於修改傳入參數的值,並且將這些修改反映到調用者中 | 主要用於從方法中返回多個結果 |
比喻 | 就像給你的朋友一個遙控器,讓他控制你的電視機(修改變數值) | 就像給你的朋友一個空盒子,讓他在盒子裡放入資料(返回結果) |
在這個例子中,value 在調用 Increment 方法之前被初始化為 10,Increment 方法中對 value 的修改會反映到調用者中。
在這個例子中,resultQuotient 和 resultRemainder 在方法 Divide 中被初始化。調用方法之前不需要對它們進行初始化,但方法內部必須對它們進行賦值。