在c#中,有四種傳遞引數方式:
1. 傳值 (value) : 無額外修飾符
2. 傳址(reference) : 需修飾符ref,傳入函式的引數必須先賦值
3. 輸出引數(output): 需修飾符out,適用於return多個返回值,必須在方法中賦值
4.陣列引數 (array):需修飾符params
而out是只出不進 (外部即便賦值,也不會傳入函式內,編譯器將提示該引數未被初始化,在函式內必須賦值,修改後和ref引數一樣,其值將保留)
classprogram
private
static
int refvalue(int i, ref
intj)
private
static
int outvalue(int i, out
intj)
}
傳值引數在方法中如果改變了引數的值,其改變後的值只能在方法內使用,方法呼叫完成後引數只會保留原來傳入時的值。
通過以上測試,可以看到out 和ref 應用駿相當於傳遞指標,故其修改將直接修改原引數的值。
網上看到:
屬性不是變數,不能作為ref 和out引數傳遞,這裡記錄下來
c ref與out的區別
c ref與out的區別 相同點 都是輸出引數 不同點 ref 1 必須初始化,即 必須賦初始值 2.有進有出 3 用在需要被呼叫的方法修改呼叫者的引用的時候。4 是傳遞引數的位址 out 1.不需要初始化,即 不需要賦初始值 2 只出不進 3 用在需要retrun多個返回值的地方 4 返回值 通過...
C ref與out之間的區別
相同點 方法的定義和呼叫都必須顯示使用ref out關鍵字。都會導致引數按引用傳遞。不同點 傳遞給ref關鍵字的引數必須賦初始值,而out不用。out關鍵字會清空變數,即使變數已經賦值也不行,退出函式時所有out引用個變數都要賦值。說明 ref的應用場景是內部對外部的值進行改變,而out則是內部對外...
C ref和out的區別
首先 兩者都是按位址傳遞的,使用後都將改變原來引數的數值。其次 ref可以把引數的數值傳遞進函式,但是out是要把引數清空,就是說你無法把乙個數值從out傳遞進去的,out進去後,引數的數值為空,所以你必須初始化一次。這個就是兩個的區別,或者說就像有的說的,ref是有進有出,out是只出不進。需求假...