方法:是一種用於實現可以由對象或類執行的計算或操作的成員,是一個已命名的語句集。方法就是把一些相關的語句組織到一起,用來執行一個任務的語句塊。比如每個C#程序至少帶一個main函數
1.格式:修飾符 返回值類型 方法名稱 (參數列表)
{
方法體
}
2.每個方法都有一個名稱和一個主體
方法名稱:是一個有意義的標識符,應當描述出方法的用途。
方法主體:包含了調用方法時實際執行的語句
修飾符:public ,private, static等等
返回值類型:void, int ,double等等
參數列表可為數組
3.用戶可以為大多數方法提供一些數據來進行處理,並讓其返回一些信息(通常是處理結果)
下面是方法的各個元素:
- Access Specifier:訪問修飾符,這個決定了變量或方法對於另一個類的可見性。
- Return type:返回類型,一個方法可以返回一個值。返回類型是方法返回的值的數據類型。如果方法不返回任何值,則返回類型為 void。
- Method name:方法名稱,是一個唯一的標識符,且是大小寫敏感的。它不能與類中聲明的其他標識符相同。
- Parameter list:參數列表,使用圓括號括起來,該參數是用來傳遞和接收方法的數據。參數列表是指方法的參數類型、順序和數量。參數是可選的,也就是說,一個方法可能不包含參數。
- Method body:方法主體,包含了完成任務所需的指令集。
For example
//編寫一個方法用於計算給定整型數組元素的和 static int Add(params int[] nums) { int sum = 0; foreach (int outnum in nums) sum += outnum; return sum; } static void Main(string[] args) { int[] myintArry = { 1, 2, 3, 4, 5 }; Console.WriteLine(Add(myintArry)); Console.ReadKey();
當調用帶有參數的方法時,您需要向方法傳遞參數。在 C# 中,有三種向方法傳遞參數的方式:值類型,引用類型,輸出類型。
值類型:傳值給方法,方法中的變量修改不影響參數列表,復制參數的實際值給函數的形式參數,實參和形參使用的是兩個不同內存中的值。在這種情況下,當形參的值發生改變時,不會影響實參的值,從而保證了實參數據的安全。
For example
//編寫一個方法用於求平方(沒有返回值) static void Square(int num) { num *= num; Console.WriteLine("num平方="+num); } static void Main(string[] args) { int num = 10; Console.WriteLine(num); Square(num); Console.WriteLine(num); Console.ReadKey();
引用類型:這種方式復制參數的內存位置的引用給形式參數。這意味着,當形參的值發生改變時,同時也改變實參的值。
ref關鍵詞指定,使用:1.調用函數變量必須非常量;2.調用變量必須初始化。
For example
//編寫一個方法用於求平方(沒有返回值) static void Square(ref int num) { num *= num; Console.WriteLine("num平方="+num); } static void Main(string[] args) { int num = 10; Console.WriteLine(num); Square( ref num); Console.WriteLine(num); Console.ReadKey();
輸出參數:可以返回多個值
1.執行方式與ref完全一樣,關鍵字為out
For example
//編寫一個方法用於計算輸出數組中最大的值 static int MaxNum(int[] nums, out int MaxNumIndex) { int maxNum = nums[0]; MaxNumIndex = 0; for (int i = 0; i < nums.Length; i++) { if (maxNum < nums[i]) maxNum = nums[i]; MaxNumIndex = i; } return maxNum; } static void Main(string[] args) { //int[] a= { 1, 2, 3, 4, 5 ,6}; //Console.WriteLine(Add(a)); //Console.ReadKey(); int[] a = {1,2,3,5,6,8,9,11}; int MaxNumIndex; Console.WriteLine("最大值max={0},最大值索引是{1}",MaxNum(a,out MaxNumIndex),MaxNumIndex); Console.ReadKey();
注:輸出變量與引用變量的區別
1.未初始化的變量用作ref非法,而out合法
2.函數調用out參數量,必須把它當作尚未賦值(即可以把已賦值的變量當作out參數,但存儲在該變量中的值在方法執行時會丟失)
3.ref,out必須在調用及定義方法時聲明