zoukankan      html  css  js  c++  java
  • C#拾遗(二、函数)

    1. 参数数组。C#的特色,允许函数参数的最后指定一个参数数组,可以使用个数不定的参数调用,用params关键字定义

    static double SumVals(params double[] vals)
     {
          double sum = 0;
          foreach (double i in vals)
          {
              sum += i;
           }
           return sum;
    }
    //调用
    SumVals(1,2,3);

     2. 值参数和引用参数。引用参数使用关键字ref指定。函数定义和函数调用时都要使用ref

    static void ShowDouble(ref int val)
    {
        val *= 2;
        Console.WriteLine("val doubled is {0}", val);
    }
    //调用,src必须非const,src必须初始化赋值。
    int src = 1;
    ShowDouble(ref src);

     3. 输出参数。使用方式和引用参数类似,使用out关键字,不同于ref, out参数可以是未赋值的变量,并且建议是,有值反而会被修改而没意义。

    static double MaxVal(double[] vals, out int maxIndex)
    {
        double MaxVal = vals[0];
        maxIndex = 0;
        for (int i = 1; i < vals.Length; i++)
        {
            if (MaxVal < vals[i])
            {
                MaxVal = vals[i];
                maxIndex = i;
            }
        }
        return MaxVal;
    }
    //使用
    double[] dVals={1,2,3,4,5,10,73,100};
    int dIndex;
    Console.WriteLine("{0},{1}", MaxVal(dVals, out dIndex),dIndex); 

    4. 函数的重载。函数的签名包括函数的名称及其参数,包括参数的类型和关键字(out/ref),不包括函数的返回类型。

    5. 委托。一种把引用存储为函数的类型。委托的生命类似于函数,不带函数体,使用关键字delegate。委托的声明指定了一个返回类型和参数列表,委托大多用于事件处理。

    delegate double ProcessDelegate(double v1, double v2);
    static double Multiply(double v1, double v2)
    {
         return v1 * v2;
    }
    static double Divide(double v1, double v2)
    {
         return v1 / v2;
    }
    //使用
    ProcessDelegate process;
    process = new ProcessDelegate(Divide);//第一种用法
    process = Multiply;//第二种用法
    process(1, 2);
  • 相关阅读:
    博客收藏
    日常开发工具收藏
    2016工作总结
    REST设计规则
    spring boot 学习笔记(二) 构建web支持jsp
    数据库事务中的隔离级别和锁+spring Transactional注解
    springboot学习笔记(一)
    Python爬虫实例(四)网站模拟登陆
    Python爬虫实例(三)代理的使用
    Python爬虫实例(二)使用selenium抓取斗鱼直播平台数据
  • 原文地址:https://www.cnblogs.com/fengyunyue/p/5868286.html
Copyright © 2011-2022 走看看