C 之可變引數,ref,out

2021-08-26 22:32:31 字數 2217 閱讀 2853

1、可變引數

在c#4.0中增加了許多新的特性,這裡我主要說一下——可變引數陣列:int sum(params int values) ;int sum(string name,params int values)

注意:可變引數陣列必須是最後乙個,而且可變引數是c4.0中才有的特性。

引數預設值(c#4.0) :void sayhello(string name,int age=20)(*了解) 注意:引數預設值的設定也必須是在非預設值引數的後面。

static void main(string args)

; max(true, "", values);

int i = max(values);

int j = max(true, "hello", 3, 5, 2, 97, 7);

int i = max(3,3,5);

console.writeline(j);

string values1 = console.readline();

console.writeline(",", 3, 5, 6, 9, 3, 3, 90, 9);

sayhello("鄒玉傑");

sayhello(「yujie", 24);

console.readkey();

} //個數不確定的可變引數以陣列的形式傳遞

static int max(bool b, string msg, params int values) }

return max;

} static void sayhello(string name,int age)

,我歲",name,age);

} static void sayhello(string name)

函式引數預設是值傳遞的,也就是「複製乙份」,例子:

int age=20;

incage(age);

console.writeline("age=",age);

2、ref and out

ref必須先初始化,因為是引用,所以必須先「有」,才能引用,如果不先初始化,呼叫的時候就取不到值會報錯,而out則是內部為外部賦值,所以不需要初始化,而且外部初始化也沒用,但是在方法內部一定要記得為其賦值,不然返回個空的東西,有什麼用?根本就沒有意義了。

ref應用場景內部對外部的值進行改變,out則是內部為外部變數賦值,out一般用在函式有多個返回值的場所。

static void main(string args)

,i2=", i1, i2); //返回的結果依舊是10,20,因為swap(i1, i2)方法處理的是變數i1,i2的拷貝或者說是副本,變數i1,i2原先的值並沒有因此而改變。

//用ref之前必須給變數賦值

swap(ref i1, ref i2);//傳遞引用。給ref傳遞引數的時候也要加上ref

console.writeline("i1=,i2=", i1, i2);

bool b= false;//不需要為out賦值

int i = parse(console.readline(), out b);

if (b)

", i);

} else

console.readkey();

} //int i傳進來的的時候是複製了乙份傳進來,折騰的是複製品

static void dotit(int i)

static void swap(ref int i1, ref int i2)//reference→ref

static void swap(int i1, int i2)

static int parse(string s,out bool success)

else if(s=="二")

else }

關於異常處理,除非萬不得已,不然盡量不要使用try catch 語句,切記!(案例:兩個變數的交換;int.tryparse。)

string s = console.readline();

int i;

if (int.tryparse(s, out i))

else

//int i = convert.toint32(s);

//i++;

console.readkey();

C 學習簡述 ref out 可變引數 遞迴

一 ref out 共同點 兩者都是對基本型別 int bool float double 等 以及string的值進行修改。不同點 ref是對有值引數 有初始化的引數 經行修改,out是對無值引數 沒有經行初始化的引數 修改。二 可變引數params static int sum int nul,...

關於C之可變引數

之前的文章有提到過變參巨集,即該巨集可以接受可變數量的引數。stdarg.h 標頭檔案為函式提供了乙個類似的功能,但是用法比較複雜。必須按如下步驟進行 1.提供乙個使用省略號 一定是最後的引數 的函式原型 2.在函式定義中建立乙個va list型別的變數 3.用巨集把該變數初始化為乙個引數列表 4....

C 學習 函式的ref out引數

函式引數預設是值傳遞的,也就是 複製乙份 通過函式的處理對數值本身並沒有影響,如果函式想對數值本身產生影響就需要使用相應的引數。ref必須先初始化,因為是引用,所以必須先 有 才能引用。使用ref如果未進行初始化,將報出如圖所示的錯誤使用了未賦值的區域性變數 age 加上ref之後傳參傳的是引用而不...