C#—參數傳遞之 Ref 和 Out

ref 和 out 聲明的參數

1.兩者都是按地址傳遞的,使用后都將改變原來參數的數值。

2.ref 可以把參數的數值傳遞進函數

3.out是要把參數清空,就是說你無法把一個數值從out傳遞進去的,out進去后,參數的數值為空,所以你必須初始化一次。

4.這個就是兩個的區別:ref是有進有出,out是只出不進。


參數傳遞:ref

概念:

1.ref 關鍵字使參數按引用傳遞。其效果是,當控制權傳遞回調用方法時,在方法中對參數的任何更改都將反映在該變量中。

2. 若要使用 ref 參數,則方法定義和調用方法都必須顯式使用 ref 關鍵字。 即 方法參數 中必須聲明 ref 修飾

代碼:

static void Main(string[] args){

? ? ? ? ? int _ref = 5;

? ??????OldRef(ref _ref);

????????Console.WriteLine(_ref);

public static void OldRef(ref int i){

? ? ? ? ? i = 44;

如此 以上的C#代碼 將會打印出值: 44,因為通過ref傳遞的參數將會改變其本事的值 ,因此為 有進有出,修改本身。

參數傳遞:out

概念:

1.out 關鍵字使參數按引用傳遞。其效果是,當控制權傳遞回調用方法時,在方法中對參數的任何更改都將反映在該變量中。

2.在Out傳入時 會將參數本身清空,因此 此參數無需初始化,out在傳入時必須現在函數內初始化才可調用

static void Main(string[] args){

????????int _out;

? ???????OldOut(out _out); //無需使用初始化

? ?????? Console.WriteLine(_out);

public static void OldOut(out int i){

? ? ? ? ? //? Console.WriteLine(i); //如果直接打印將被報空值?

? ? ? ? ?i = 55; //此時對傳入的out進行賦值

如此 以上的C#代碼 將會打印出值: 55,因為通過out傳遞的參數將會改變其本事的值 ,當然在函數內必須率先對其進行賦值才可。

因此為? 無進有出,修改本身。??

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容