1. Out,params,ref之前先記錄平時用的最多的按值傳遞參數的情況,當然默認情況下參數傳入函數的默認行為也是按值傳遞的。
1: //默認情況下參數會按照值傳遞
2: static int add(int x,int y) {
3: int ans = x + y;
4: x = 1000; y = 2000;
5: return ans;
6: }
1: static void Main(string[] args) {
2: Console.WriteLine("默認情況下按值傳遞");
3: int x = 3, y = 8;
4: Console.WriteLine("調用前:x:{0},y:{1}",x,y);
5: Console.WriteLine("調用後的結果:{0}",add(x,y));
6: Console.WriteLine("調用後:x:{0},y:{1}",x,y);
7: Console.ReadLine();
8: }
輸出的結果跟我們預期的一樣:
2.Out修飾符
1: static void add(int x,int y,out int ans) {
2: ans = x + y;
3: }
Main裡面可以這麼寫:
1: int ans;
2: add(20, 20, out ans);
3: Console.WriteLine("20+20={0}", ans);
4: Console.ReadLine();
輸出的結果當然是:20+20=40啦,這個在原來如果沒有用out的話那會出現“使用了未賦值的局部變量”。
那即使我們給ans賦值如:int ans=10;
它在調用add方法之後也不會改變,因為調用的方法根本不知道裡面發生了什麼。
這樣就變成了20+20=10了,顯然是錯的。
當然Out的最大的亮點,就是在一個函數調用之後可以輸出多個參數值。
將上面的方法改為:
1: static void setParams(out int x,out string y,out bool ans) {
2: x = 2;
3: y = "YeanJay";
4: ans = true;
5: }
我們在Main裡面可以這麼寫: