2.4:方法及其重载
1、定义
[访问修饰符] 返回值类型 方法名([参数列表])
{
//方法体
}
2、方法的参数
(1)方法的参数类型:值类型和引用类型
当方法传递的参数是值类型时,变量的栈数据会完整地复制到目标参数中,即实参 形参中的数据相同,但存放在内存的不同位置;目标形参更改也不会对调用者的初始变量产生任何影响;
当方法传递参数是引用类型时,只是将变量的引用复制到参数中,实参和形参的引用指向内存的同一位置,当目标方法中对形参所做的更改会影响到调用者的初始变量;
(2)引用类型参数
要想使参数招安照引用传递方式传递,需要在方法声明和调用时使用ref关键字修饰参数,如:
public void fun(ref int a)
{
a = 100;
}
调用时:
int a = 1;
fun(ref a);//a的值就会变成100;
3、一些特殊的方法参数传递方式(out、params、可选参数、命名参数)
(1)输出参数-out关键字
数据从方法内部单向转出,使用关键字out修饰,并且使用时也要加out关键字,如:
void fun(out int arg)
{
arg = 100;
}
使用:
int a;
fun(out a);//a的值变成了100;
(2)参数数组-params关键字
允许将相同类型,数量可变的多个参数传给一个方法;如:
void fun(params int[] values)
{
}
使用时:fun(1,2,3...);
(3)可选参数
(4)命名参数
命令参数解决的是顺序问题,如
void fun(string str, int i)
{
}
调用时:fun(i:20,str:"hello");
4、方法重载
方法名相同,参数个数或者参数类型不同的方法;
void fun(int i);
void fun(double i);//类型不同
void fun(int i, int j);//个数不同;
【与C++相比】:
.C#的作用域控制符不能像C++一样,都要独立写的,如:
C++:
public:
void fun1();
void fun2();
而C#:
public void fun1();
public void fun2();