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之後傳參傳的是引用而不...