c 中out和ref的用法與區別

2021-05-10 12:48:40 字數 610 閱讀 9130

一、相同之處

ref和out都對函式引數採用引用傳遞形式——不管是值型別引數還是引用型別引數,並且定義函式和呼叫函式時都必須顯示生命該引數為ref/out形式。兩者都可以使函式傳回多個結果。

二、不同之處

兩種引數型別的設計思想不同,ref的目的在於將值型別引數當作引用型引數傳遞到函式,是函式的輸入引數,並且在函式內部的任何改變也都將影響函式外部該引數的值;而out的目的在於獲取函式的返回值,是輸出引數,由函式內部計算得到的值再回傳到函式外部,因此必須在函式內部對該引數賦值,這將沖掉函式外部的任何賦值,使得函式外部賦值毫無意義。

具體表現為:

1、out必須在函式體內初始化,這使得在外面初始化變得沒意義。也就是說,out型的引數在函式體內不能得到外面傳進來的初始值。

2、ref必須在函式體外初始化。

3、兩者在函式體內的任何修改都將影響到函式體外面。

三、例子

using system;

public static void outfun(out string str) }

class class1 }

}

C 中ref和out用法和區別

ref和out是c 開發中經常使用的關鍵字,ref引數是引用,out引數為輸出引數。1 out必須在函式體內初始化,在外面初始化沒意義,也就是說,out型的引數在函式體內不能得到外面傳進來的初始值。2 ref必須在函式體外初始化。3 都是按位址傳值,都在函式體的任何修改都將影響到外面。例如 1 ou...

c 中out與ref的用法與區別

out 表示這個變數要回傳值,最簡單的應用是除法,比如你需要乙個除法方法,同時得到餘數和商,但是普通的方法只能得到乙個返回值,這個時候就可以使用 out引數,把另乙個值返回。比如,你定義了乙個方法 int a int b,out int c 它除了能得到返回值外,還可以在方法裡對 c進行賦值,這樣你...

c 中ref與out區別

ref 和 out 都是c 中的關鍵字,所實現的功能也差不多,都是指定乙個引數按照引用傳遞。對於編譯後的程式而言,它們之間沒有任何區別,也就是說他們只有語法區別。有如下語法區別 1.ref 傳進去的引數必須在呼叫前初始化,out不必,即 int i somemethod ref i 語法錯誤 som...