ref和out的原理及區別

2021-07-15 18:58:38 字數 875 閱讀 9109

一、建立ref引數

在使用引數時,將引數傳遞給方法使用,而方法中對此值的任何改變並不能影響方法外部的變數。下面乙個例子,控制台輸出4,並沒有對變數進行增量。例如:

class reforout

public

static

void

main(string args)

",i);

console.readline();

}}

輸出結果:形式引數i只是傳遞值,沒有傳遞真正的變數i,所以變數i本身的值並沒有改變。

但是,如果,我想通過geti方法,去改變main函式中變數i 的值,那麼我們可以想象,如果變數i本身被傳遞到方法中,那麼就可以完成變數i值被改變:這裡要靠ref關鍵字來實現:

class reforout

public

static

void

main(string args)

",i);

console.readline();

}}

輸出結果:變數i本身加1.

二、建立out引數

out引數與ref引數的作用是一樣的,都是為了傳遞值變數的位址,是變數本身被方法改變。但所不同的是,ref引數要求變數在方法外初始化,而out引數則要求變數在方法內初始化。

將上面的例子改寫成out引數:

class reforout

public

static

void

main(string args)

",i);

console.readline();

}}

輸出結果:i=5

ref和out的使用及區別

1.ref的使用 使用ref進行引數的傳遞時,該引數在建立時,必須設定其初始值,且ref側重於修改 2.out的使用 採用out引數傳遞時,該引數在建立時,可以不設定初始值,但是在方法中必須初始化,out側重於輸出 注釋 當希望方法返回多個值時,可以用out,並且乙個方法中的引數可以有乙個或多個ou...

ref和out的區別

還是以例子來表明吧 1.ref int i 0 有函式fun ref i 和fun i 它們的函式體都是,那麼在執行以下兩段 後 1 int i 0 fun i system.console.writeline i.tostring 2 int i 0 fun ref i system.consol...

ref和out的區別

ref與out 1.out和ref 關鍵字會導致引數通過引用來傳遞 2.ref要求變數必須在傳遞之前進行初始化 3.儘管作為 out 引數傳遞的變數不必在傳遞之前進行初始化,但需要呼叫方法以便在方法返回之前賦值 4.ref 和 out 關鍵字在執行時的處理方式不同,但在編譯時的處理方式相同 5.個人...