方法(又名函数):
一、 函数就是一堆代码进行重用的机制,函数是一段代码,这段代码可能有输入值(参数),可能会有返回值,一个函数就像一 个专门做这件事的人,我们调用他来做一些事,他可能需要我们提供一些数据,他执行完可能会返还给我们一些结果,我们提供的看数据叫做参数,它返还的结果叫做返回值,
1、函数的语法:
[public] static 返回值类型 方法名([参数列表])
{
方法体;
}
public: 访问修饰符,
static:静态的
返回值类型,如果不需要返回值就写void
方法名:Pascal命名法每个单词的首字母都大写
参数列表,完成这个方法所必须要提供给这个方法的条件,无条件是可以不写参数
方法的调用:类名.方法名([参数])
***注意:(如果方法与Main()在同一个类中,且方法为static静态方法,调用时可以不加类名)
return的作用:1、返回一个值,2、结束方法的执行
2、方法的功能要单一,方法最忌讳的是提示用户输入;因为这样只能在控制台方法的功能要单一,方法最忌讳的是提示用户输入;因为这样只能在控制台
3、我们在Mian()函数中调用Test()方法,我们称Main()函数为调用者,称Test()函数为被调用者,
4、传参返回值; 使用静态字段来模拟全局变量(每个方法都能访问到此类中的静态段)
一、 函数就是一堆代码进行重用的机制,函数是一段代码,这段代码可能有输入值(参数),可能会有返回值,一个函数就像一 个专门做这件事的人,我们调用他来做一些事,他可能需要我们提供一些数据,他执行完可能会返还给我们一些结果,我们提供的看数据叫做参数,它返还的结果叫做返回值,
1、函数的语法:
[public] static 返回值类型 方法名([参数列表])
{
方法体;
}
public: 访问修饰符,
static:静态的
返回值类型,如果不需要返回值就写void
方法名:Pascal命名法每个单词的首字母都大写
参数列表,完成这个方法所必须要提供给这个方法的条件,无条件是可以不写参数
方法的调用:类名.方法名([参数])
***注意:(如果方法与Main()在同一个类中,且方法为static静态方法,调用时可以不加类名)
return的作用:1、返回一个值,2、结束方法的执行
2、方法的功能要单一,方法最忌讳的是提示用户输入;因为这样只能在控制台方法的功能要单一,方法最忌讳的是提示用户输入;因为这样只能在控制台
3、我们在Mian()函数中调用Test()方法,我们称Main()函数为调用者,称Test()函数为被调用者,
4、传参返回值; 使用静态字段来模拟全局变量(每个方法都能访问到此类中的静态段)
5、错误处理;并非所有的代码路径都有返回值:(我们在方法声明的时候有返回值类型,但是在方法体中没有写return)
1、方法的调用:如果方法与Main()在同一个类中,且方法为static静态方法,调用时可以不加类名,但是如果方法没有被定义成Static静态方法,此时需要需要实例话类的对象,对象名.方法名([参数])来调用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 方法的调用 { class Program { static void Main(string[] args) { int a = 3; Program.Test(a);//此处的类名可以省略 Console.ReadKey(); } private static void Test(int n) { Console.WriteLine(n); } } }
运行结果:
非静态方法要求对象的引用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 方法的调用 { class Program { static void Main(string[] args) { int a = 3; Program pro = new Program(); pro.Test(a);//类的实例对象不能省略因为方法不是静态方法 Console.ReadKey(); } private void Test(int n) { Console.WriteLine("我不是静态方法: "+ n); } } }
运行结果:
2、方法的练习:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 方法练习 { class Program { static void Main(string[] args) { int a = 3; Console.WriteLine(Test(a)); Console.ReadKey(); } public static int Test(int a) { return a= a + 3; } } }
运行结果:
求两个数的最大值:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 方法1 { class Program { static void Main(string[] args) { int n = Program.GetMax(1,6); Console.WriteLine("1和6中最大的那个是: "+n); Console.ReadKey(); } /// <summary> /// 求两个整数的最大值并将最大值返回 /// </summary> /// <param name="n1">第一个整数</param> /// <param name="n2">第二个整数</param> /// <returns></returns> public static int GetMax(int n1, int n2) { return n1 > n2 ? n1 : n2;//return 1、结束这个方法2、返回一个值 //int max = n1 > n2 ? n1 : n2; //return max; } } }
运行结果:
交换两个变量的值:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 方法的高级参数ref的前奏 { class Program { static void Main(string[] args) { //交换两个int 类型的的变量 int n1 = 10; int n2 = 40; //方法1 //int Temp = n1; //n1 = n2; //n2 = Temp; //方法2面试题不用中间变量就可以交换两个值; //n1 = n1 - n2; //n2 = n1 + n2; //n1 = n2 - n1; Test(ref n1, ref n2); Console.WriteLine("交换后: n1 = {0}, n2 = {1}",n1 , n2); Console.ReadKey(); } public static void Test(ref int n1, ref int n2) { int temp = n1; n1 = n2; n2 = temp; } } }
运行结果:
数组求和练习:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 方法的两个练习2数组求和 { class Program { static void Main(string[] args) { int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int sum = GetSum(arr); Console.WriteLine("数组的和为:"+ sum); Console.ReadKey(); } private static int GetSum(int[] arr) { int sums=0;//定义一个变量一定要给他初始化 for (int i = 0; i < arr.Length; i++) { sums += arr[i]; } return sums; } } }
运行结果:
方法练习判断闰年:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 方法的调用4练习 { class Program { static void Main(string[] args) { //判断是否是闰年 bool b = IsRun(2000); Console.WriteLine("2000年是闰年吗?"+b); Console.ReadKey(); } /// <summary> /// 判断一个年份是否是闰年 /// </summary> /// <param name="year">要判断的年份</param> /// <returns>返回 的结果</returns> public static bool IsRun(int year) { bool b = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); return b;//在我们没写return之前报一个错 } } }
运行结果:
3、方法的功能要单一,方法最忌讳的是提示用户输入;因为这样只能在控制台调用
问题:1、读取一个整数,定义成方法。2、多次调用如果是数字则返回否则提示用户重新输入
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; /* * 此方法有误,方法的功能必须是单一的方法最忌讳的是提示用户输入 */ namespace 方法的练习5 { class Program { static void Main(string[] args) { //读取一个整数,定义成方法 //多次调用如果是数字则返回否则提示用户重新输入 NewMethod(); Console.ReadKey(); } private static void NewMethod() { while (true) { try { Console.WriteLine("请输入一个数"); int number = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("您输入的整数是:"+ number); break; } catch { Console.WriteLine("输入有误情重新输入"); } } } } }
运行结果:
问题:1、读取一个整数,定义成方法。2、多次调用如果是数字则返回否则提示用户重新输入
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 方法练习501 { class Program { static void Main(string[] args) { Console.WriteLine("您输入的整数是:"+ getInpout()); Console.ReadKey(); } private static int getInpout() { int input; string strInput; while (true) { Console.WriteLine("请输入整数"); strInput = Console.ReadLine(); if (int.TryParse(strInput, out input)) { return input; } else { Console.WriteLine("您输入的有误请重新输入"); } } } } }
运行结果:
4、解决在方法中用循环接收用户输入,把接受用户的输入写在方法外面,然后把用户的输入当成参数传递给方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 方法的练习502 { class Program { static void Main(string[] args) { Console.WriteLine("请输入一个数字"); string input = Console.ReadLine(); int output = GetInput(input); Console.WriteLine("你输入的数字是"+ output); Console.ReadKey(); } private static int GetInput(string str) { while (true) { try { int output = Convert.ToInt32(str); return output; } catch { Console.WriteLine("输入有无请重新输入"); str = Console.ReadLine();//必须有这一句要不然就死循环了 } } } } }
运行结果:
5、练习之提示用户台只能输入yes或no时进行下一步
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 方法的两个练习1 { class Program { static void Main(string[] args) { Console.WriteLine("请输入yes或者no"); string str = Console.ReadLine(); string result = IsYesOrNo(str); Console.WriteLine("您输入的是:"+ result); Console.ReadKey(); } private static string IsYesOrNo(string input) { while (true) { if(input =="yes"||input =="no") { return input; } else { Console.WriteLine("你输入的不对:"); Console.WriteLine("请输入yes或者no"); input = Console.ReadLine();//挺必要的要没有就陷入死循环 } } } } }
运行结果: