標籤:
/*方法和參數 * 1.c#的方法必須在某個類型當中 * 重要:一個類中的所有方法的簽名必須具有唯一性:方法名,參數的資料類型,參數的數量這三個標準來定義唯一性;不包括傳回型別;不包括參數的名稱 * 2.選擇性參數的意思就是在聲明方法的時候將常量值賦給參數,以後調用方法時就不必每個參數都指定; * 重要:所有的選擇性參數必須放在必須參數(無預設值)的後面,預設值必須是常量 * Date: 2015/2/5 * Time: 14:33 * 規範: * 1.開發人員應側重於可讀性,而不是在寫出更簡短的代碼方面耗費心機,為了使代碼一目瞭然,進而在長時間裡更容易維護,可讀性是關鍵; * 2.方法名稱最好是動詞和動詞短語詩人一目瞭然就能明白這個方法是幹什麼的; * */using System;namespace LearningFunctionAndArgument{ class Program { public string Name{get;set;} public static void Main(string[] args) { // TODO: Implement Functionality Here// (new Program()).SayHello("XiaoHong",23);// Program p=(new Program()).Test();// p.Name="yu";// string result;// Console.WriteLine(Program.ConditionBreak("quit",out result));// Console.WriteLine(result);// TestParameter(new Peraon(){Height=180,Lover="YY"}); Peraon person=new Peraon(){Height=180,Lover="YY"}; string strArgument="oldStr"; TestParameter(person,ref strArgument); System.Console.WriteLine(person.Height+" "+person.Lover+" "+strArgument);// Combine();//可以指定包含的0個實參// Combine(13);//錯誤,證明參數數組是型別安全的,必須於形參相容,所以會報錯 Console.WriteLine(new Program().Talk(24,"wang")); new Program().SayHello(name:"xiaoxiao",age:18);// new Program().SayHello(name:"xiaoxiao",18);//錯誤:如果有參數顯示的具名引數的話,那麼所有的參數都必須顯示具名引數規範 new Program().Talk(lover:"you");//具名引數 Console.ReadKey(true); } public void SayHello(string name,int age) {// string name=null;//報錯,原因是出現了兩個同名的局部變數 Console.WriteLine("My name is {0},my age is {1}",name,age); } Program Test() { return new Program(); } public static bool ConditionBreak(string command,out string result) { switch(command) { case "quit": result="jieguo"; return false; default : result="jieguo"; return true; } } public static void TestParameter(Peraon person,ref string strArgument) { person.Height=178; person.Lover="MM"; strArgument ="newStr"; Console.WriteLine(person.Height+" "+person.Lover+" "+strArgument); } /*參數數組:參數數組不一定是方法的唯一參數,但必須是方法聲明的最後一個參數,由於只有最後一個參數才能使參數數組,所以一個方法只能有一個參數數組*/ public static string Combine(params string[] paths) { string result=string.Empty; foreach(string path in paths) { result=System.IO.Path.Combine(result,path); } return result; }// public static int Combine(params string[] Paths)//只是傳回型別,參數的名稱不一樣,會報錯,會認為是同一個方法簽名// {// // return 24;// } public static string Combine(params int[] paths)//正確,因為參數的類型不一樣 { return "Erro"; } public int Combine(string name,params string[] paths)//正確,因為參數的個數不一樣 { return 90; } public int Combine(int age,int height)//正確,因為參數的個數, { return 56; }// public static int Combine(int height,int age)//錯誤// {// return 34;// } public int Combine(int age,int height,string name)//正確,參數的個數不一樣 { return 67; } public int NewCombine(int age,int height,string name)//正確 { return 67; } /*選擇性參數*/ public string Talk(int height,string name="XiaoSan") { return string.Format(name+"{0}",height); } public void Talk(int height=13,string name="donggua",string lover="me") { Console.WriteLine("height={0},name={1},lover={2}",height,name,lover); } } class Peraon { public string Lover{get;set;} public int Height{get;set;} } }
C# 方法和參數