c#函数的改进:表达式体方法,使用=>(lambda箭头)实现
static double Mutiply(double val1, double val2)
{
return val1 * val2;
}
static double Mutiply2(double val1, double val2) => val1 * val2;
参数:形参和实参
形参:void add(int a, int b),这里的a和b就是形参。
实参:当你进行函数调用的时候,add(1, 2),这里的1和2就是实参。
这是一个包含数组参数的函数
static int SumVals(int[] vals)
{
int sum = 0;
foreach (var val in vals)
{
sum += val;
}
return sum;
}
这是一个使用了参数数组的函数,注意与上面进行对比
static int SumVals2(params int[] vals)
{
int sum = 0;
foreach (var val in vals)
{
sum += val;
}
return sum;
}
参数数组:其实就函数定义的效果部分来说,结果是一样的,区别在于调用这个函数的时候,形参就不需要定义数组来传值了,可以传不限制的参数,注意,这种params的参数有且只有一个,切必须是最后。
调用的区别:
SumVals(new int[] { 1, 2 });//参数为数组
SumVals2(1,2);//数组参数(原谅不知道如何翻译)
引用参数和值参数
值参数:就是平时所使用的参数,这个实参是不会改变的。
引用参数:就像对这个实参添加了指针后,这个实参进入函数体里面,如果发生改变,那么这个实参是会改变的,通过在参数前面添加ref 或者out来定义。
ref和out的区别:本质都是把这个实参和在函数里面改变绑定在一起了,不同的是,out必须是未赋值的,ref可以赋值可以不赋值,所以out通常用于一个新的结果,而ref则是反映这个参数的变化。
Main()函数
程序的入口函数,有一个参数是string[] args,可以通过在vs的项目属性-调试-命令行参数,预先设定从而获取这些参数。
也可以通过命令行来添加:
结构函数
定义在结构类型里面的方法
struct route
{
public Orientation direction;
public double distance;
public double routeMethod(double pa) => distance + pa;
}
函数的重载:
是指函数的参数名称相同,签名不一样的函数,函数的返回类型不是签名
数量不一样,类型不一样,就可以重载,值类型和引用类型也可以(用ref和out),但是顺序不一样的参数不算。
委托:
和函数很类型的一种引用类型,没有方法体内容,和方法绑定后就可以代替那个方法去调用了。(delegate)