1.方法的聲明
[修飾符] 返回類型 方法名稱(參數(shù)列表)
{
方法體
}
若方法沒有返回值,則返回類型為void,此時return語句是可選的。
2.調(diào)用方法
靜態(tài)方法調(diào)用通過類名.方法名()的方式;實例方法調(diào)用時,需先使用new關鍵字實例化一個對象,再通過對象名.方法名()來調(diào)用。
class Program { static void Main(string[] args) { Console.WriteLine("Pi is " + MathTest.GetPi()); int x = MathTest.GetSquareOf(5); Console.WriteLine("Square of 5 is " + x); MathTest math = new MathTest(); math.value = 10; Console.WriteLine("Value field of math variable contains " + math.value); Console.WriteLine("Square of 10 is " + math.GetSquare()); } } class MathTest { public int value; public int GetSquare() { return value * value; } public static int GetSquareOf(int x) { return x * x; } public static double GetPi() { return 3.14159; } }
輸出內(nèi)容:

3.傳參
方法參數(shù)可以通過引用或值傳遞給方法。在傳遞給方法之前,無論是引用傳遞還是值傳遞,變量都必須初始化。
變量通過引用傳遞給方法時,在方法內(nèi)部所作的改變在方法退出之后仍然有效;若通過值傳送給方法,方法調(diào)用后,變量仍然為原始值。
C#中,除非特別指定,所有的引用類型都通過引用傳遞,所有的值類型都通過值來傳遞。
特殊情況:字符串是不可變的,改變字符串的值,會創(chuàng)建一個全新的字符串,所以字符串無法采用一般引用類型的行為方式。方法調(diào)用時,對字符串做任何改變都不會影響原始字符串。
static void SomeFunction(int[] ints,int i) { ints[0] = 100; i = 100; } static void Main(string[] args) { int i = 0; int[] ints = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Console.WriteLine("調(diào)用方法前,參數(shù)值為:"); Console.WriteLine("i=" + i); Console.WriteLine("ints[0]=" + ints[0]); Console.WriteLine("調(diào)用方法后,參數(shù)值為:"); SomeFunction(ints, i); Console.WriteLine("i=" + i); Console.WriteLine("ints[0]=" + ints[0]); }
輸出:

4.ref參數(shù)
使用ref關鍵字,可以使得值參數(shù)通過引用的方式傳送給方法;此時,對該變量所做的任何改變都會影響原始值。調(diào)用方法時,也需要添加ref關鍵字。
static void SomeFunction(int[] ints,ref int i) { ints[0] = 100; i = 100; } static void Main(string[] args) { int i = 0; int[] ints = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Console.WriteLine("調(diào)用方法前,參數(shù)值為:"); Console.WriteLine("i=" + i); Console.WriteLine("ints[0]=" + ints[0]); Console.WriteLine("調(diào)用方法后,參數(shù)值為:"); SomeFunction(ints,ref i); Console.WriteLine("i=" + i); Console.WriteLine("ints[0]=" + ints[0]); }
輸出:

5.out參數(shù)
使用out關鍵字,可以使得傳遞給方法的變量不初始化。調(diào)用方法時,也需要使用out關鍵字。
static void SomethingFunction(out int param) { param = 100; } static void Main(string[] args) { int param; SomethingFunction(out param); Console.WriteLine(param);//輸出:100 }
6.命名參數(shù)
參數(shù)一般需要按定義的順序傳送給方法。但命名參數(shù)則可以按任意順序傳遞。若方法有多個參數(shù),可以在同一個調(diào)用中混合使用位置參數(shù)和命名參數(shù)。
public class Test { public void FullName(string firstNamse,string lastName) { Console.WriteLine(firstNamse + " " + lastName); return; } }
以下兩種調(diào)用方式輸出相同內(nèi)容:
Test test = new Test(); test.FullName("Yunyun", "Zhao"); test.FullName(lastName: "Zhao", firstNamse: "Yunyun");
7.可選參數(shù)
可選參數(shù)必須設置默認值,同時是方法定義中的最后參數(shù)。
public void OptionalMethod(int notOptional,int optional=10) { Console.WriteLine(notOptional + optional); }
8.方法重載
在同個一類中,方法名相同,但參數(shù)列表不同(即參數(shù)個數(shù)、類型和順序不同),和返回類型、參數(shù)名稱無關。
public void DoSomething(int param1) { } public void DoSomething(int param1,int param2) { } public void DoSomething(int param1,double param2) { } public void DoSomething(double param1,int param2) { }
參考書籍:《C#高級編程(第9版)》
浙公網(wǎng)安備 33010602011771號