C 基礎之ref與out關鍵字

2022-02-05 05:03:57 字數 1141 閱讀 7552

ref

ref 關鍵字使得引數按引用傳遞,通俗點講就是傳遞引數的位址,因此在方法中對引數所做的任何更改都反映在該變數中。值得注意的是傳遞到 ref 引數的引數必須先進行初始化。

class refexample

static

void main()

}

按引用傳遞值型別(如上所示)是有用的,但是 ref 對於傳遞引用型別也是很有用的。這允許被呼叫的方法修改該引用所引用的物件,因為引用本身是按引用來傳遞的。下面的示例顯示出當引用型別作為 ref 引數傳遞時,可以更改物件本身。

class refrefexample

static

void main()

}

out

out 關鍵字也使得引數按引用傳遞,在這一點上與 ref 關鍵字是一致的,不同之處在於 ref 要求變數必須在傳遞之前進行初始化,out 則無此強制要求。儘管作為 out 引數傳遞的變數不需要在傳遞之前進行初始化,但在呼叫方法時,必須在方法返回之前賦值,確切的說,在該方法中使用 out 引數之前必須為其賦值。

class outexample

static

void main()

}

當希望方法返回多個值時,宣告 out 方法很有用。使用 out 引數的方法仍然可以將變數用作返回型別,但它還可以將乙個或多個物件作為 out 引數返回給呼叫方法。此示例使用 out 在乙個方法呼叫中返回三個變數。請注意,第三個引數所賦的值為 null。這樣便允許方法有選擇地返回值。

class outreturnexample

static

void main()

}

含ref與out引數的方法的過載

ref 和 out 關鍵字在執行時的處理方式不同,但在編譯時的處理方式相同。因此,如果乙個方法採用 ref 引數,而另乙個方法採用 out 引數,則無法過載這兩個方法。但是,如果乙個方法採用 ref 或 out 引數,而另乙個方法不採用這兩類引數,則可以進行過載。

注:本文內容大多來自msdn,純為學習摘錄!

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關鍵字

上一次隨筆中提到有winform程式有兩個知識點挺重要點,第乙個是tryparse方法和parse方法區別,這一次來談談另乙個學習心得,就是c 中的關鍵字out與ref view code 1 using system 2using system.collections.generic 3using...