C#入门3

目录

函数

定义

参数数组

引用参数

输出参数

函数重载


本节介绍一下函数

函数

定义

static <returnType> <functionName>(<paramType> <paramName>,...)
{
    ......
    return returnValue;
}

esp:执行一行代码的函数可以使用C#6引入的一个功能,表达式体方法来实现,使用=>

static <returnType> <functionName>() => x*y

//等价
static <returnType> <functionName>(x,y)
{
    return x*y;
}

参数数组

参数数组是一个特殊参数,在函数定义参数的最后,允许使用个数不定的参数调用函数,使用params关键字定义

static <returnType> <functionName>(<p1Type> <p1Name>,...,params <type>[] <name>)
{
    ...
    return <returnValue>;
}

//调用
<functionName>(<p1>,...,<val1>,<val2>,...)

//eg
static int sumVals(params int[] data)
{
    int sum = 0;
    foreach (int val in data)
        sum += val;
    return sum;
}
static void main(string[] args)
{
    int sum = sumVals(1,2,3,4,5);
    Console.Write(sum);
    
    return 0;
}

需要注意的是<val1>,<val2>等都是type类型的值,用于初始化name数组。可以指定的参数个数不限,但是必须是<type>类型

引用参数

通常传递参数都是值传递,不会影响原变量。但是如果想通过函数修改传递参数,一个方法就是传引用,使用ref关键字指定参数

static <returnType> <functionName>(ref <type> <val>)

Note:

  1. 传引用只能传递变量
  2. 传引用的变量必须初始化,C#不允许假定ref参数在使用它的函数中初始化
  3. 传引用参数除了指定变量名,需要带上ref

输出参数

想要改变参数值,除了传引用,也可以使用out关键字,其指定参数在函数执行完后会把值返回给函数调用中的变量。

static <returnType> <functionName>(out <type> <val>)

//eg:调用
sum(out int[] data)

Note:

  1. 把未赋值的变量赋给ref参数非法,但是可以赋给out参数
  2. 使用out参数时必须把它看成未赋值的变量,即相当于要在函数中重新初始化
  3. 传参需要使用out关键字

函数重载

函数重载允许创建多个同名函数,每个函数可使用不同的参数类型。使用这种方式可以不必显示地指定要使用那个函数,可以根据使用参数类型执行相应的函数。需要特别注意的是,不能定义两个仅返回值不同的同名函数。

static void f(out int v)
{
    v = 0;
    Console.Write($"v1{v}\n");
}

static void f(ref double v)
{
    v = 1;
    Console.Write($"v2{v}\n");
}

static void Main(string[] args)
{
    //调用哪个函数看参数类型
    //int sum = 5;
    double sum = 10.0;
    f(ref sum);
    Console.Write(sum);
}

猜你喜欢

转载自blog.csdn.net/wyzworld/article/details/112639369