標籤:
1、我們在Main()函數中,調用Test()函數,我們管Main()函數稱之為調用者,
管Test()函數稱之為被調用者。
如果被調用者想要得到調用者的值:
1)、傳遞參數。
2)、使用靜態欄位來類比全域變數。
如果調用者想要得到被調用者的值:
1)、傳回值
C#沒有全域變數,用static實現(類範圍)。
2、
不管是實參還是形參,都是在記憶體中開闢了空間的。
3、方法的功能一定要單一。
GetMax(int n1,int n2)
方法中最忌諱的就是出現提示使用者輸入的字眼。
4、out、ref、params
1)、out參數。
如果你在一個方法中,返回多個相同類型的值的時候,可以考慮返回一個數組。
但是,如果返回多個不同類型的值的時候,返回數組就不行了,那麼這個時候,
我們可以考慮使用out參數。out參數就側重於在一個方法中可以返回多個不同類型的值。
注釋:這個返回並不是return返回的,而是通過參數帶出來的。
比如登陸:返回登陸結果(成功或者失敗)和登入資訊(使用者名稱或者密碼錯誤)。
msg在方法外就是個普通的String,不需要初始化。
/// <summary> /// 判斷登陸是否成功 /// </summary> /// <param name="name">使用者名稱</param> /// <param name="pwd">密碼</param> /// <param name="msg">多餘返回的登陸資訊</param> /// <returns>返回登陸結果</returns> public static bool IsLogin(string name, string pwd, out string msg) { if (name == "admin" && pwd == "888888") { msg = "登陸成功"; return true; } else if (name == "admin") { msg = "密碼錯誤"; return false; } else if (pwd == "888888") { msg = "使用者名稱錯誤"; return false; } else { msg = "未知錯誤"; return false; } }
有同學提到可以用結構體返回..........感覺是對的
2)、ref參數
能夠將一個變數帶入一個方法中進行改變,改變完成後,再講改變後的值帶出方法。
ref參數要求在方法外必須為其賦值,而方法內可以不賦值。
注釋:感覺像C語言中的值傳遞。只不過不要傳回值,通過ref直接改變了。
比如:交換變數,(不用類似址傳遞的方法)
3)、params可變參數
將實參列表中跟可變參數數群組類型一致的元素都當做數組的元素去處理。
params可變參數必須是形參列表中的最後一個元素。
注釋:最後一個,否則不知道可變參後邊的元素是否是可變參內容;不能有多個可變參,那樣不是最後的可變參就不符合文法。
5、方法的重載
概念:方法的重載指的就是方法的名稱相同給,但是參數不同。
參數不同,分為兩種情況
1)、如果參數的個數相同,那麼參數的類型就不能相同。
2)、如果參數的類型相同,那麼參數的個數就不能相同。
***方法的重載跟傳回值沒有關係。
6、方法的遞迴
方法自己調用自己。
找出一個檔案夾中所有的檔案。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _14_方法的遞迴{ class Program { static void Main(string[] args) { TellStory(); Console.ReadKey(); } public static int i = 0; public static void TellStory() { //int i = 0;寫這個的話 死迴圈 Console.WriteLine("從前有座山"); Console.WriteLine("山裡有座廟"); Console.WriteLine("廟裡有個老和尚和小和尚"); Console.WriteLine("有一天,小和尚哭了,老和尚給小和尚講了一個故事"); i++; if (i >= 10) { //break是跳出本次迴圈 return; } //TellStory(0);和第一行寫int i=0一個效果 TellStory(); } }}
C#學習筆記(三)