C Ref 與out 的區別

2022-03-20 18:13:05 字數 626 閱讀 9891

在c#中,有四種傳遞引數方式:

1. 傳值 (value) : 無額外修飾符

2. 傳址(reference) : 需修飾符ref,傳入函式的引數必須先賦值

3. 輸出引數(output): 需修飾符out,適用於return多個返回值,必須在方法中賦值

4.陣列引數 (array):需修飾符params

而out是只出不進 (外部即便賦值,也不會傳入函式內,編譯器將提示該引數未被初始化,在函式內必須賦值,修改後和ref引數一樣,其值將保留)

class

program

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是只出不進。需求假...