關於C out與ref引數的使用

2021-08-18 20:00:44 字數 1032 閱讀 7349

1.ref:ref  即refence,又叫引用,類似於c++中的&,會將值和變數一起傳入方法

2.out:主要用於函式返回多個值,在有out引數方法內,相應的值必須初始化,

不然無法通過編譯

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

, b = ", a, b);//outfun : a = 3 , b = 1

int c = 10, d = 3; reffun(ref c, ref d);

console.writeline("reffun : c = , d = ", c, d);//reffun : c = 13 , d = 1

int e = 3, f = 4;

norfun(e, f);

console.writeline("reffun : c = , d = ", e, f);//norfun : c = 3 , d = 4

console.readline(); }

private static void norfun(int a, int b)

static void outfun(out int a, out int b)

static void reffun(ref int a, ref int b) }

}

輸出結果的原因:

outfun返回的是在函式裡定義的值

reffun會把變數的位址傳到方法裡,在方法裡修改會直接改變原本變數的值

norfun是普通呼叫,方法裡修改值不會改變原本的值

不過這個感覺並沒有什麼對比性,因為out和ref雖然在編譯的時候編譯器會把之歸為一種型別,但是out更主要的用法應該是在方法內部對變數進行初始化/改變,然後傳到呼叫方法一端,達成一種反向傳值

(當然只是我個人的見解)

C out和ref 引數修飾符

引數修飾符 無引數修飾符 如果乙個引數沒有任何引數修飾符修飾,那麼認為它是值傳遞,意味著方法內部收到的是實參資料的副本 out 輸出引數由方法內部進行賦值,引用傳遞 如果方法內部沒有給被out修飾的輸出引數賦值,就會出現編譯報錯。out最大的用途就是只呼叫一次方法便會產生多個返回值。c 7.0中實現...

C Out與ref是幹什麼的?

1.最後沒有寫 return 語句的話,表示程式正常退出 2.不需要返回值時,存在return的作用 例子void main void main 3.需要返回值時存在return的作用 int main int argc 終止函式執行的一種方式。當return語句提供了乙個值時,這個值就成為函式的返...

關於C 中ref與out引數的理解

ref與out引數的使用 using system using system.collections.generic using system.linq using system.text 如果乙個方法採用 ref 或 out 引數,而另乙個方法不採用這兩類引數,則可以進行過載,如下所示 class...