c#基礎學習(0724)之可變參數、ref和out
阿新 • • 發佈:2018-07-24
col ram test 不為 外部 rri money 改變 end
params可變參數,無論有幾個參數,必須出現在參數列表的最後,可以為可變參數直接傳遞一個對應類型的數組
#region 可變參數 //1.如果方法有多個參數,可變參數可以作為最後一個參數 //2.可變參數可以傳遞參數也可以不傳遞參數,如果不傳遞參數,則args數組為一個長度為0的數組 //3.可變參數可以直接傳遞一個數組進來 static void Test(string msg,params int[] args) { //如果可變參數傳值為null時,需要加上判斷 if(args!=null) { } }
#endregion
static void Main(string[] args)
{
//Console.WriteLine("Hello World!");
//Test("aa", 10, 1, 2, 32, 4, 5, 6);
//int[] arrInt = new int[] { 1, 2, 3, 4, 5 };
//Test("xxx");
//Test("aaaa", arrInt);
//Test("aaaa", null);
//Console.ReadKey();
//Console.WriteLine(""); ;
//List<string> list = new List<string>();
//Console.WriteLine("===={0}====",list);
//Console.ReadKey();
}
ref參數使用方法
//ref僅僅時一個地址,引用傳遞,可以把值傳遞強制改為引用傳遞 //ref:參數在傳遞之前必須賦值,在方法中可以不為ref參數賦值,可以直接使用 //ref:應用場景內部對外部的值進行改變,out則是內部為外部變量賦值,out一般用在函數有多個返回值的場所 #region ref參數 static void JianJin(ref int m) { m=m+300; } static void KouKuan(ref int m) { m=m-300; } #endregion //使用 static void Main(string[] args) { int money=1000; JianJin(ref money); KouKuan(ref money); Console.WriteLine(money); Console.ReadKey(); }
out參數使用方法
#region out參數 static void Test1(out int x) { //out參數在使用之前必須在方法裏面為out參數賦值 //out參數無法獲取傳遞進來的變量中的值,只能為傳遞進來的變量賦值 //out參數在方法執行完畢之前,必須賦值。 //Console.WriteLine(x);//報錯:使用了未賦值的out參數"x" x=100; x++; } #endregion //out使用 static void Main(string[] args) { int m=1000;//out方法可以不傳值,傳了也沒用,因為方法裏面必須為out參數賦值 Test1(out m); Console.WriteLine(m); }
out多個參數使用場景
//方法 static int GetAge(out string name,out int height) { name="超哥"; height=180; return 1000; } //使用場景,使用ref也可以返回多個值 static void Main(string[] args) { //兩個參數可以內聯聲明 string n; int h; int age=GetAge(out n,out h); Console.WreteLine(age); Console.WriteLine(n); Console.WreteLine(h); Console.ReadKey(); #region out使用場景2 string s="abc"; int result; //將數字的字符串表示形式轉換為他的等效32為有符號整數。一個指示轉換是否成功的返回值 bool b=int.TryParse(s,out result); if(b) { Console.WriteLine("轉換成功,結果為:{0}",result); } else { Console.WriteLine("轉換失敗,結果為:{0}",s) } #endregion }
ref交換兩個變量位置
#region 交換兩個變量 static void Swap(ref int n1,ref int n2) { int tmp=n1; n1=n2; n2=tmp; } #endregion static void Main(string[] args) { int m=10,x=20; Swap(ref m, ref x); Console.WriteLine(m); Console.WriteLine(x); Console.ReadKey(); }
out用戶登錄練習
private static bool ValidUserLogin(string uid, string pwd, out string msg) { bool isOk=false; if(uid!="admin") { msg="用戶名錯誤"; } else if(pwd!="888888") { msg="密碼錯誤"; } else { isOk=true; msg="歡迎用戶:"+usd; } return isOk; } //使用 static void Main(string[] args) { #region用戶登錄練習 while(true) { Console.WriteLine("請輸入用戶名:"); string uid=Console.ReadLine(); Console.WriteLine("請輸入密碼:"); string pwd=Console.ReadLine(); string msg;//可以內聯聲明 bool isOk=ValidUserLogin(uid,pwd,out msg); if(isOk) { Console.WriteLine("登錄成功===={0}",msg); } else { Console.WriteLine("登錄失敗===={0}",msg); } } #endregion }
c#基礎學習(0724)之可變參數、ref和out