函数、函数的递归、重载、委托的声明

来源:互联网 发布:淘宝发物流怎么填单号 编辑:程序博客网 时间:2024/05/29 13:42

一、函数的定义与使用

    static void Write()
{
Console.WriteLine("HanShu")
}

Write();
  函数的定义是在Class中的,与主函数平级
  
  

二、返回值和参数

    static int Plus(int num1,int num2)      函数定义时的参数叫形参
{
int sum = num1+num2;
return sum;
}

1、使用
int num1 = 35;
int num2 = 45;
int res = Plus(num1,num2);                  函数使用时的参数叫实参
2、
    int res = plus(35,45);                      如果函数里有参数则需要赋值给一个
                                              新的变量来使用!
3、例子:在数组中获取最大值
    static int MaxNum(int[] Array)
    {
        int max = Array[0];                     默认第一个数(0号)为最大值
        for (int i = 1; i < Array.Length; i++)     所以i要从1开始!
        {
            if(Array[i] > max)
            {
                max = Array[i];
            }
        }
        return max;                             返回值要写在循环外!
    }

int[] Array = { 2, 3, 567, 987, 234, 3456 };
    Console.WriteLine(MaxNum(Array));


三、参数数组

    在函数的参数前加 params 即构成参数数组
1、例子
    static int Plus(params int[] array)           int 类型的参数数组
    {
        int sum = 0;
        for (int i = 0; i < array.Length; i++)
        {
            sum += array[i];
        }
        return sum;
    }


    int sum2 = Plus(23, 345, 746, 34, 5);
    区别:与数组参数的不同在与函数的调用,我们可以传递过来任意多个参数,
        然后编译器会为我们自动组成一个数组,减少了我们创建一个数组
的过程。


四、结构函数

1、定义
    struct Total
    {
        public int a;
        public int b;
        public int Num()
        {
            return a + b;
        }
    }
2、初始化、赋值与调用
    Total total;                   如果需要在使用方法,需要重新初始化一个变量!
    total.a = 2;
    total.b = 5;
    Console.WriteLine(total.Num());
   特点:如果要重复调用一个方法,但是不同的值或变量,可以定义一个结构函数
         结构函数可以有参数,(total)也可以使用函数里的属性


 

五、函数重载

1、为什么使用函数的重载
    static int MaxValue(int[] intArray)
{
...
return ;
}
      这个函数只能取得int类型的数组最大值,如果要取得double类型的最大值
    static double MaxValue(double[] doubleArray)
{
...
return ;
}
      函数名字相同,参数不同,叫函数的重载  (函数名与参数都相同,构不成函数重载)
      编译器通过识别不同的参数去选择调用哪个函数




六、委托

1、声明
    delegate double MyDelegate(double param1, double param2);
    (1) 在命名空间(namespace)下定义
(2) 与定义函数差不多,在委托名前加 delegate
    (3) 委托不需要结构体
(4) 委托可以指向一个函数
2、如何指向一个函数
    class Program                   在class中定义一个函数
    {
static double JiaFa(double param1,double param2)
{
return param1+param2;
}
    static void Main(string[] args)
{
MyDelegate de;              给委托定义一个新的变量!
de = JiaFa;
de = 另一个函数;            委托可以指向多个函数
Console.WriteLine(de(2.3,34.2));
}
注意:委托指向的函数 (参数类型) 必须与委托的 (参数类型) 相同




七、函数的递归调用

    说明:1、递归即在函数中调用自己
      2、要有一个结束条件来判断递归结束,否则会无限递归

static int F(int n)
{
if(n == 0) return 2;        结束条件
if(n == 1) return 3;        
return F(n-1)+F(n-2);       调用自身
}




    四舍五入
int res = (int)(number + 0.5f);