使用C 中的ref關鍵字,用2個簡單例子來說明

2022-01-19 02:13:35 字數 1288 閱讀 7264

在c#中,如果在方法引數前面加上ref關鍵字,說明引數傳遞的是引用,而不是值。如何理解呢?

引數是簡單型別的例子

static

void main(string

args)

private

static

void change(string

temp)

private

static

void changebyref(ref

string

temp)

輸出結果:

aa--refchanged

● 在change()方法中,雖然改變了temp的值,但方法沒有返回值,列印temp依然是初始值a;

● 在chnagebyref()方法中,由於加上了關鍵字,雖然也沒有返回值,當改變temp的值後,temp的引用位址發生了改變,再次列印,temp的值為新的引用位址對應的值。

引數是類型別的例子

class

program

;console.writeline(

"初始年齡是:

", p.age);

changeage(p);

console.writeline(

"改變pet的屬性值後,年齡是:

", p.age);

changeagebyref(

refp);

console.writeline(""

, p.age);

console.readkey();

}private

static

void

changeage(pet p)

private

static

void changeagebyref(ref

pet p);}

}public

class

pet

}

輸出結果:

● 在changeage()方法中,改變的是pet例項的屬性值。

● 在changeagebyref()方法中,改變的pet例項的引用位址。

總結方法引數無論是簡單型別,還是類型別,當在其前加上ref關鍵字後,對引數的賦值,實際上是改變的是方法引數變數的引用位址。使用ref注意點:

● 使用帶ref的方法之前,需要給方法參變數賦上初始值

● 無論是定義方法還是使用方法,都要帶上關鍵字ref

關於ref關鍵字的使用

正常情況下,乙個整型變數,如 int x 5 在通過方法引數呼叫時,如呼叫方法m x,x 2 則會產生2個x的副本,如下所示 而通過帶ref的方法引數呼叫時,不會產生副本。如果在方法中,修改了ref的引數,那麼此改變也會影響到原呼叫的變數。下面是乙個例子 static void main strin...

C 中的ref與out關鍵字

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

C 中ref與out 關鍵字的區別

首先,我們都知道,ref和out關鍵字生命的引數都是傳址的,那麼二者有區別嗎?使用ref關鍵字時,引數必須先初始化,而out關鍵字則不需要,out關鍵在宣告的關鍵字,在函式中必須被初始化,用 來說明.public void use int t 100 int k refmethod ref t 注意...