標籤:style blog http ar 使用 sp on 2014 log
第五章 方法
1、方法是一塊具有名稱的代碼
包括:方法體、方法頭
局部變數必須被賦值才可以執行下面的操作。執行個體變數有隱式初始化。有時候,類型推斷可以用var關鍵字,類似於C++當中的auto。用於局部變數。
C#中,不能在第一個名稱的有效範圍內去聲明另一個同名的本地變數。
2、本地常量:局部常量。Const 關鍵字。Const double PI = 3.1415926; 在編譯期決定其值。
3、 參數:形參與實參。參數也有幾種:值參數/引用參數。
實值型別與值參數是兩種不同的概念:實值型別就是類型本身包含其值。而值參數是把實參的值複製給形參。
Void mymethod(myclass f1, int f2)
{
F1.val += 5;
F2+= 5;
}
調用: mymethod(a1,a2);
執行過程:
方法開始時,系統在棧中為形參分配空間,並從實參複製值。a1為參考型別,所以引用被複製,但指向相同。
在使用引用參數時,必須加關鍵字 ref。 void method(ref int val){ xxxx }, 方法調用 method(ref y);//必須使用變數。
舉例:
Void mymethod(ref myclass f1,ref int f2)
{
F1.val += 5;
F2+= 5;
}
調用: mymethod(ref a1,ref a2);
執行過程:不會開闢新的記憶體單元,只是把形參名設定為實參的別名而已。a1與f1,引用相同的位置。
參考型別作為值參數和引用參數:
我們修改引用參數的成員時,無論是作為值參數還是引用參數,效果都一樣。但,當我們去修改參考型別本身時,那麼其作為值參數與引用參數是不同的。
請看下面的圖形:
4、輸出參數
需要加關鍵字 out
Void mythod(out int val); //形參也是實參的別名,且我們通過方法體之後就會知道你傳入的實參的值。方法體內部會對實參賦值。
5、參數數組
前面是一個實參對應一個形參,現在是多個實參對應一個特殊的形參。
關鍵字:params 比如 void mythod(params int[] vals){ }
調用: int[] arrays = {1, 2 ,3}; mythod(arrays);
調用時,如果是用實值型別傳遞,即實參是值,數組參數是實值型別,實參不受影響。
如果是參考型別傳遞,即實參是數組名,數組參數是參考型別,實參受方法內部影響。
6、方法重載
方法名稱相同,方法特徵不同即可。
7、具名引數
給參數命名,這樣我們可以以任意順序調用。
Void mythod(int a, int b, int c);
參數的名字和值: 調用時指定名稱和值即可。 Mythod(c:2, a:4, b: 1);
8、選擇性參數
就是我們在調用時,可以調用這個參數,也可以省略這個參數。這時,必須在聲明的時候給參數提供預設值。
Void mythod(int a, int b, int c = 2);
先是必填參數+ 選擇性參數+ params 參數。
9、棧幀:就是一個個方法進棧。
C#文法複習2