概念:
方法就是可重用的代码块,这段代码可能有输入的值(参数),可能会有返回值。一个方法就像一个专业人员,调用它做某件专业的事,它可能需要数据,执行完后可能产生运算结果。需要的数据就叫参数,返回运算结果叫返回值。
每一个 C# 程序至少有一个带有 Main 方法的类
语法:
<访问修饰符> [修饰符] <返回类型> <方法名字>(参数列表)
{
方法体;
}
专业词解释
访问修饰符
:可访问的范围。
返回类型
:方法中可以返回一个值。返回类型是返回的值的数据类型,如果不需要返回值,则返回值类型需要写void。
[修饰符]
:是否是静态方法,对象方法不能加 static
方法名称
:方法标识符(方法名)。
参数列表
:该参数是用来传递和接收方法的数据。参数列表是指方法的参数类型、顺序和数量。参数是可选的,也就是说,一个方法可能不包含参数。
方法主体
:完成一件事的代码集合,代码块
举例
第一个例子
方法定义和调用
static void Main(string[] args)
{
//调用第一个方法
sum(1, 2);
//调用第二个方法
string name = GetName();
}
static void Sum(int x, int y)
{
Console.WriteLine(x + y);
}
static string GetName()
{
return "张三";
}
第二个例子
讲解4遍C#
static void Main(string[] args)
{
int i = 0;
while (i < 4)
{
//调用方法
LearnCSharp(i);
i++;
}
}
static void LearnCSharp(int i)
{
Console.WriteLine("这是第{0}遍讲C#",i);
Console.WriteLine("今天开始讲C#,第一节初识C# 阿巴阿巴阿巴");
Console.WriteLine("第二节C#数据类型 阿巴阿巴阿巴。。。。");
Console.WriteLine("OK,我们的C#课程就讲完了,这是最后一遍讲了");
}
方法注意点
- 方法不能嵌套定义,不能在方法内部再去定义方法,但方法可以嵌套调用
- 同一个类中,调用时,如果都是静态方法或者都是对象方法,则直接通过方法名称就可以调用。
- return可以立即退出方法执行,return语句触发后, 方法中return后面的代码将不再执行
- 调用时,如果不需要处理返回值,就算方法有返回值,也可以不接收
- 根据参数和返回值的有无,将方法分为四类
- 无参数无返回值方法
- 有参数无返回值方法
- 无参数有返回值方法
- 有参数有返回值方法
练习
-
看以下代码的输出值
用户输入两个数字,如果第一个数字比第二个数字小,则提示重新输入,否则,计算两个数字的差值。
方法重载
概念
当同一个类中,多个方法的方法名相同,但是参数不同的时候,称之为方法重载。
调用重载方法
Console.WriteLine(100);
Console.WriteLine(1.00);
Console.WriteLine('o');
Console.WriteLine("overload");
Console.WriteLine(true);
声明带重载的方法
public int Sum(int x, int y)
{
return x + y;
}
public int Sum(int x, int y, int z)
{
return x + y + z;
}
public double Sum(double x, double y)
{
return x + y;
}
参数数组
概念
当方法的参数不固定时,可以通过参数数组来传递
举个例子
static void Main(string[] args)
{
int sum1 = NumbersCount(new int[] { 1, 2, 3, 4, 5 });
Console.WriteLine(sum1);
int sum2 = ParammsCount(1, 2, 3, 4, 5);
Console.WriteLine(sum2);
}
static int NumbersCount(int[] numbers)
{
int sum = 0;
foreach (var item in numbers)
{
sum += item;
}
return sum;
}
static int ParammsCount(params int[] numbers)
{
int sum = 0;
foreach (var item in numbers)
{
sum += item;
}
return sum;
}
递归
概念:
在方法内部调用当前方法自己,称之为递归。
语法:
static void Main(string[] args)
{
inputMonth();
}
static void inputMonth()
{
Console.WriteLine("请输入一个你喜欢的月份(正整数)");
int x = int.Parse(Console.ReadLine());
if (x > 12 || x <= 0)
{
Console.WriteLine("输入有误");
inputMonth();//递归调用
}
else {
Console.WriteLine("真巧呀,我也喜欢{0}月",x);
}
}
练习
- 使用方法实现对Int数组,求得元素总和、平均数
- 输出n!,如5的阶乘为:1*2*3*4*5
- 输出1-n的阶乘之和,如n为10,则输出1!+2!+3!+....+10!的值