C ref與out關鍵字解析

2021-08-16 11:45:52 字數 2083 閱讀 6192

簡介:ref和out是c#開發中經常使用的關鍵字,所以作為乙個.net開發,必須知道如何使用這兩個關鍵字.

1、相同點

ref和out都是按位址傳遞,使用後都將改變原來引數的數值。

2、ref關鍵字

(1)、使用ref關鍵字的注意點:

i、方法定義和呼叫方法都必須顯式使用 ref 關鍵字

ii、傳遞到 ref 引數的引數必須初始化,否則程式會報錯

iii、通過ref的這個特性,一定程度上解決了c#中的函式只能有乙個返回值的問題

(2)、**示例:

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading.tasks;

namespace

,b:", a, b);//

輸出:72和6說明傳入fun方法是a和b的引用

}

static

void fun(ref

int a, ref

intb) }}

(2)、out關鍵字

(1)、使用out關鍵字的注意點:

i、方法定義和呼叫方法都必須顯式使用 out關鍵字

ii、out關鍵字無法將引數值傳遞到out引數所在的方法中,只能傳遞引數的引用(個人理解),所以out引數的引數值初始化必須在其方法內進行,否則程式會報錯

iii、通過out的這個特性,一定程度上解決了c#中的函式只能有乙個返回值的問題

(2)、**示例

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading.tasks;

namespace

,b:", a, b);//

輸出:3和1說明out引數傳遞進去的是a和b的引用,輸出3說明a的引數值沒有傳入fun方法中

}

static

void fun(out

int a, out

intb)}}

(3)、ref和out的區別

通過上面的解析,ref和out最主要的區別是:

ref將引數的引數值和引用都傳入方法中,所以ref的引數的初始化必須在方法外部,進行,也就是ref的引數必須有初始化值,否則程式會報錯

out不會將引數的引數值傳入方法中,只會將引數的引用傳入方法中,所以引數的初始化工作必須在其對用方法中進行,否則程式會報錯

(4)、ref和out的使用需注意

i、

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading.tasks;

namespace

public

void samplemethod(out

inti) }}

ii、

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading.tasks;

namespace

public

void samplemethod(ref

inti) }}

但是,如果乙個方法採用 ref 或 out 引數,而另乙個方法不採用這兩個引數,則可以進行過載

C ref與out關鍵字解析

ref和out都是按位址傳遞,使用後都將改變原來引數的數值。2 ref關鍵字 1 使用ref關鍵字的注意點 i 方法定義和呼叫方法都必須顯式使用 ref 關鍵字 ii 傳遞到 ref 引數的引數必須初始化,否則程式會報錯 iii 通過ref的這個特性,一定程度上解決了c 中的函式只能有乙個返回值的問...

C ref 與 out 關鍵字解析

簡介 ref和out是c 開發中經常使用的關鍵字,所以作為乙個.net開發,必須知道如何使用這兩個關鍵字.1 相同點 ref和out都是按位址傳遞,使用後都將改變原來引數的數值。2 ref關鍵字 1 使用ref關鍵字的注意點 i 方法定義和呼叫方法都必須顯式使用 ref 關鍵字 ii 傳遞到 ref...

C ref與out關鍵字解析

簡介 ref和out是c 開發中經常使用的關鍵字,所以作為乙個.net開發,必須知道如何使用這兩個關鍵字.1 相同點 ref和out都是按位址傳遞,使用後都將改變原來引數的數值。2 ref關鍵字 1 使用ref關鍵字的注意點 i 方法定義和呼叫方法都必須顯式使用 ref 關鍵字 ii 傳遞到 ref...