张家港网站建设公司,去除 做网站就用建站之星,杭州网站建设|网站设计,静安网站建设一、方法作用域 被调用者需要调用者的值,方法有二: 1.传参数. private static void Main(string[] args){int m 3;Console.WriteLine(m);Console.ReadKey();}public static int GetMax(int m){return m 3;} 2.使用静态字段模拟全局. 多个方法都需要时#x…一、方法作用域 被调用者需要调用者的值,方法有二: 1.传参数. private static void Main(string[] args){int m 3;Console.WriteLine(m);Console.ReadKey();}public static int GetMax(int m){return m 3;} 2.使用静态字段模拟全局. 多个方法都需要时可以用静态字段/全局变量避免传递参数. 若调用者需要被调用者的值方法二 1.返回值。return 值; private static void Main(string[] args){int a, m 0;a Test(m);//返回值可以作用于aConsole.WriteLine({0},{1}, m, a);//0,3Console.ReadKey();}public static int Test(int m){m 3;return m;//此中m仅作用于本函数} 3.全局或静态变量 形参与实参名称相同与否无关紧要。两者类型一一对应均需在内存开辟空间。 break语句将终止最接近的封闭迭代语句即for、foreach、while 或do循环或switch语句。 break语句将控制权转交给已终止语句后面的语句若有。 方法的功能一定要单一只能做一件事。 方法最忌讳的就是出现提示用户输入的字眼。因为有些仅限于控制台尽量避免。 二、三个高级参数 out、ref、param 1.out 必须在方法内部赋值 返回多个相同类型的值时可以用返回数组的方式 private static void Main(string[] args){int[] num { 1, 2, 3, 4, 5, 6 };int[] res GetM(num);Console.WriteLine({0},{1},{2},{3}, res[0], res[1], res[2], res[3]);Console.ReadKey();}public static int[] GetM(int[] num){int[] res new int[4];//0最大1最小2总和3平均res[0] num[0]; res[1] num[0]; res[2] 0;for (int i 0; i num.Length; i){if (num[i] res[0]) { res[0] num[i]; }if (num[i] res[1]) { res[1] num[i]; }res[2] num[i];//总和}res[3] res[2] / num.Length;//平均return res;} 但如果是返回多个不同类型时数组就不适用了。这时用out参数 形参与实参必须都要带out关键字。out的个数与类型必须一一对应. 实参可以不必先赋值因为在调用的返回时会赋值与方法返回值无关。 private static void Main(string[] args){int[] num { 1, 2, 3, 4, 5, 6 };int max1, min1, sum1, avg1;//要接收返回值的多个不同类型不必赋初值.Test(num, out max1, out min1, out sum1, out avg1);//out不得省略Console.WriteLine({0},{1},{2},{3}, max1, min1, sum1, avg1);Console.ReadKey();}public static void Test(int[] num, out int max, out int min, out int sum, out int avg){max num[0]; min num[1]; sum 0; //out参数已经声明不能再次声明但必须赋值.for (int i 0; i num.Length; i){if (num[i] max) { max num[i]; }if (num[i] min) { min num[i]; }sum num[i];//总和}avg sum / num.Length;// 无需再写return这就是out返回多参数的优点} 提示登陆 private static void Main(string[] args){Console.WriteLine(请输入用户名:); string user Console.ReadLine();Console.WriteLine(请输入密码:); string password Console.ReadLine();LandState(user, password, out string state);//可以out中声明Console.WriteLine(state);Console.ReadKey();}public static void LandState(string user, string password, out string state){if (user admin password ! 8888) state 密码错误;else if (user ! admin password 8888) state 用户名错误;else if (user admin password 8888) state 登录成功;else state 登陆错误; // 一条语句可省略{}} 下面的正则写法(bool与ourt中的stirng不同类型) public static bool LandState(string user, string password, out string state){if (user admin password ! 8888){state 密码错误;return false;}else if (user ! admin password 8888){state 用户名错误;return false;}else if (user admin password 8888){state 登录成功;return true;}else{state 登陆错误; // 一条语句可省略{}return false;}} 注int.Tryparse(3333,out n) 将字串转为整形成功返回true,n为整数;失败返回false,n为0. 实际上这个也是用了out参数调用在方法中用了try-catch进行捕获赋值. 2.ref 引用传参 能将变量带入方法中并接受其中的变化。类似于指向内存地址的指针 所以变量在内存必须分配空间故在使用ref调用前必须赋值out则不必但在方法内赋值. 注意尽管类似指针但不是指针值还是实际的数其中的指向由vs自己指定 private static void Main(string[] args){double a 500, b 500;RefTest(ref a);//加了ref表示指针引用可以带回主函数Test(b);//Test方法中的b无法带回到主函数Console.WriteLine({0},{1} , a, b);//502,500Console.ReadKey();}public static void RefTest(ref double a)//引用{a 2;}public static void Test(double b){b 1;} 不借助第三变量交换两个数 int a 10, b 20, temp;a b (b a) * 0;//(ba)先ba,再返回b即先b10,返回整体10.(a, b) (b, a);//元组tuplea a ^ b;//异或b a ^ b;a a ^ b;a a b;//和值b a - b;a a - b;a a - b;//差值b a b;a a - b; 3.params 把实参序列组成形参中的长度可变数组.params必须只能在参数最后. 这样让实参序列可长可短。由此可知参数中最有只能有一个可变参数. private static void Main(string[] args){int[] n { 1, 3, 4, 5, 6 }; //无params时需要用此句为实参GetSum(大王, n);//也可直接传数组GetSum(张三, 88, 22, 99);GetSum(李四, 22, 33, 44, 5, 66, 77, 8);//最后长度可变Console.ReadKey();}public static void GetSum(string name, params int[] n){//params把后继的序列作了数组n的元素,故params必须在形参最后int sum 0;for (int i 0; i n.Length; i) sum n[i];//仅一句时也可不用{}Console.WriteLine({0}的总成绩为{1}, name, sum);} 三、方法的重载 方法的名称相同但参数不同。 避免同样的方法使用不同的方法把调用时统一起来. 参数不同的情况 1.参数个数相同类型不差异 2.参数类型相同个数不能相同. 注方法的返回值与重载没有关系。 private static void Main(string[] args){int a 1, b 2;double c 1.1, d 1.2;Console.WriteLine(GetPlug(a, b));Console.WriteLine(GetPlug(c,d));Console.ReadKey();}public static int GetPlug(int a, int b){ return a b; }public static double GetPlug(double a, double b){ return a b; }public static string GetPlug(string a, string b){ return a b; }public static int GetPlug(int a, int b, int c){ return a b c; } 四、方法的递归 方法自己调用自己必须有终点。 例如用静态来计数判断终点。