ref和out關鍵字初解

2021-04-12 23:28:23 字數 547 閱讀 7785

ref和out關鍵字初解

引數可以通過引用和值傳遞給方法。通過引用傳遞給方法的變數可以有呼叫它的方法作自由改變,所作的修改會影響原來的變數的值;在c#中,除非特別說明,所有的引數都是值傳遞。

這是預設情況,也可以使用ref關鍵字,迫使值引數通過引用傳遞給方法,則給方法對變數所作的修改都會影響原來物件的值。在定義該方法時把該引數定義為ref後,在呼叫該方法時,還需要新增ref關鍵字。

static void myfun(int x,ref int y)

//呼叫該方法

myfun(x,ref y);

有時為了從乙個函式中返回多個值,我們需要使用out關鍵字,把輸出值賦給通過引用傳遞給方法的變數(也就是引數)。但c#要求變數再被引用的前必須初始化。在呼叫該方法時,還需要新增out關鍵字。

static void myfun(out int y)

////呼叫該方法

public static int main()

從上面的例子我們可以看出,out關鍵字和ref的不同點主要在:使用out關鍵字時,必須在方法體內為變數提供初始值。  

ref 關鍵字out關鍵字

using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace outandref ref修飾方法的引數,在呼叫的時候必須...

ref關鍵字 out關鍵字 區別

ref 和 out 關鍵字比較怪,他們在方法的引數中使用,今天對他們做了認真的研究 msdn上的定義 ref關鍵字使引數按引用傳遞。其效果是,當控制權傳遞 用方法時,在方法中對引數所做的任何更改都將反映在該變數中。若要使用ref引數,則方法定義和呼叫方法都必須顯式使用ref關鍵字。out關鍵字會導致...

關於C 中的ref和out關鍵字

c 中的傳值呼叫和傳引用調動。傳值呼叫是指在使用引數時,是把乙個值傳遞給函式使用的乙個變數。對函式中此變數的任何修改都不影響函式呼叫中指定的引數。using system using system.collections.generic using system.linq using system....