/*方法和参数 * 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;} } }
时间: 2024-10-25 21:07:02