1、方法的概念(代码复用性)
方法(函数)就是将一堆代码进行重用的一种机制。方法就是一段代码,这段代码可能有输入的值(形参),可能会返回值。一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我们。要求的数据叫做参数,返回的执行结果就是返回值。
正确使用方法会带来以下好处:
)减少代码重复
)将复杂问题分解为更简单的部分
)提高代码的清晰度
)代码重用
)信息隐藏
2、定义、调用
访问权限 返回值 方法名()
关键字:return
1、方法立即结束返回 2、返回值
调用:对象.方法名() 注:如果调用同一个类里面的方法,对象名可以省略
小技巧:封装方法时,看你有几个参数是变化的,一般定义成几个输入参数
3、值传递和引用传递
注:形参在实参传入的时候开辟内存
值传递:按值传递,传递过去的是该值类型实例的一个拷贝。
static void Main(string[] args)
{
int a=10;
int b=20;
Pass(a,b);
Console.WriteLine(a); //值传递,a的值还是10
Console.WriteLine(b); //值传递,a的值还是10
Console.ReadKey();
}
static void Pass(int a1,int b1) //实参a的值传入形参a,拷贝a的值放入a1
{
a1++;
b1++;
}
引用传递:是指在调用方法时实际参数和形式参数都指向同一个内存,这样在方法中如果对参数进行修改,将会影响到实际参数。
static void Main(string[] args)
{
int a=10;
int[] b= { 14,25,36};
Pass(a,b);
Console.WriteLine(a); //值传递,a的值还是10
Console.WriteLine(b); //引用传递,b数组的值已经反转
Console.ReadKey();
}
static void Pass(int a1,int[] b1) //实参a的值传入形参a,拷贝a的值放入a1
{
a1++;
Array.Reverse(b1) ; //反转b1元素
}
4、参数关键字
1、ref:值传递变为引用传递,强制改变值(侧重修改值),使用时形参和实参都必须加上ref修饰
2、out:输出参数,在方法里必须赋初值(侧重赋值)
3、可变数组 params
static void Main(string[] args)
{
int a=10;
int c;
int[] b= { 14,25,36};
Pass(ref a,out c,12,45,78,45,78,69,25,49);
Console.WriteLine(a); //使用ref修饰,这时a的值变为11
Console.WriteLine(b); //引用传递,使用params修改,b数组为可变数组,值经过方法反转
Console.WriteLine(c); //使用out修饰,c值为100
Console.ReadKey();
}
static void Pass(ref int a1,out int c,params int[] b1)
{
c = 100;
a1++;
Array.Reverse(b1) ; //反转b1元素
}
5、补充
方法的重载:满足以下条件
1、方法名一样 2、方法的参数(参数个数、参数类型)有一个不一样
注:方法名一样,参数类型,个数一样,返回值不一样,属于方法的重复定义
默认参数:在形参列表直接赋初值
在调用方法时,可以不输入方法默认参数对应的实参,使用默认值,如果传入实参,使用实参的值
注:默认参数要放在非默认参数后面
命名参数:调用方法时参数输入按 形参名:实参值 输入,告诉编译器变量对齐,可以不按形参列表顺序来输入实参
static void Main(string[] args)
{
int a=10;
int c=25;
Pass( aa:a,cc:c); //命名参数
Console.ReadKey();
}
static void Pass(int aa,int cc,int bb=10) //bb:默认参数
{
}
方法递归:(自己调自己)
static void Main(string[] args)
{
Pass(); //调用三次
Console.ReadKey();
}
static int count = 0; //递归次数
static void Pass() //第一次调用
{
Console.WriteLine("调用Pass方法");
count++;
if (count<3) //递归三次
{
Pass();
}
}