首页 > 代码库 > C#拾遗(二、函数)
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 = http://www.mamicode.com/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);
C#拾遗(二、函数)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。