(一)params---------可以讓參數随意變化的關鍵字
1 staticvoid Main(string[] args)
2 {
3 TestParams(1, 2, 3);
4 TestParams(1, 2, 3, 4, 5, 6);//注意參數随意變換
5
6 TestParams2(1, "a", "b", 12, 52, 16);
7
8 Console.ReadLine();
9 }
10
11 staticvoid TestParams(paramsint[] list)
12 {
13 string str =string.Empty;
14 for (int i =0; i < list.Length; i++)
15 {
16 str = str + list[i] +";";
17 }
18 Console.WriteLine(str);
19 }
20
21 staticvoid TestParams2(paramsobject[] list)
22 {
23 string str =string.Empty;
24 for (int i =0; i < list.Length; i++)
25 {
26 str = str + list[i] +";";
27 }
28 Console.WriteLine(str);
29 }
(二)out------一個引用傳遞
因為傳遞的不是值,而是引用,是以對out參數做的任何修改都會反映在該變量當中
static void Main(string[] args)
{
string str; //str不必初始化,因為str進入方法後,會清掉自己,使自己變成一個幹淨的參數,
//也因為這個原因,在從方法傳回前,必須給str指派,否則會報錯。
TestOutPar(out str);
Console.WriteLine(str);
Console.ReadLine();
}
static void TestOutPar(out string str)
{
str = "hello!";
}
結果顯示:"hello!"
如果在TestOutPar方法裡注釋掉 //str = "hello!";那麼程式會報錯
用途:
當希望一個方法能夠傳回多個值時,這個out就變得非常有用。比如在分頁方法中,我們需要傳回目前頁,頁數等等資料。
3 int pageCount;
4 int pageSize;
5 string result=TestOutPar(out pageCount, out pageSize);
6
7 Console.WriteLine(pageCount);
8 Console.WriteLine(pageSize);
9 Console.WriteLine(result);
10 Console.ReadLine();
11 }
12
13 staticstring TestOutPar(outint pageCount, outint pageSize)
14 {
15 pageCount =100;
16 pageSize =12;
17 return"hello!";
18 }
19
20 結果顯示:100,12,hello!
(三)ref-----------僅僅是一個位址
3 int value =10;//必須初始化,因為value進入方法後還是他自己,也因為這個原因,value可以在方法内不操作
4 TestRefPar(ref value);
5 Console.WriteLine(value);
6 Console.ReadLine();
7 }
8
9 staticstring TestRefPar(refint value)
10 {
11 //value = 100; //value在方法内不操作
12 return"hello!";
13 }