1.Out参数

  作用:使用Out参数主要是用于返回多个变量

  示例:

1     int[] b = { 1, 2, 3, 4, 5 };    //有一个数组
2     int max;                //用来接收返回的最大值
3     int min;                //用来接收返回的最小值
4     int sum;
5     int avg;
6     OutTest(b,out max,out min,out sum,out avg);
7     Console.WriteLine("最大:{0},最小:{1},总和:{2},平均:{3}",max,min,sum,avg);
 1 public static void OutTest(int[] a, out int max, out int min, out int sum, out int avg)
 2         {
 3             //使用OUT参数要注意,每个OUT参数都必须赋值才能使用,因为当没有给OUT参数赋值的时候,就不知道要返回什么数值了
 4             max = a[0];
 5             min = a[0];
 6             sum = 0;
 7             avg = 0;
 8             for (int i = 0; i < a.Length; i++)
 9             {
10                 if (max < a[i])
11                 {
12                     max = a[i];  //重新赋值最大值
13                 }
14                 else if (min > a[i])
15                 {
16                     min = a[i];  //重新赋值最小值
17                 }
18
19                 sum += a[i];     //计算总和
20             }
21             //计算平均值
22             avg = sum / a.Length;
23
24         }

  注意:使用OUT参数要注意,每个OUT参数都必须赋值才能使用,因为当没有给OUT参数赋值的时候,就不知道要返回什么数值了,并且使用的时候也要加上Out关键字

2.Ref参数

  作用:作为传地址类型的,会修改传入的变量的值。

  示例:

1     int a1 = 0;
2     int b1 = 0;
3     RefTest(ref a1, ref b1);    //传入的参数必须要先赋值才能传递
4     Console.WriteLine("a1={0},b1={1}",a1,b1);
5     public static void RefTest(ref int a,ref int b)
6         {
7             a = 100;
8             b = 200;
9         }

  注意:传入的参数之前必须要先赋值才能传递,注意,但是如果使用数组传递的话,可以不适用ref,方法外的变量也会发生变化。

  例如:

            int[] b = { 4, 5, 6, 7, 8, 9 };Console.WriteLine("反转前:");for (int i = 0; i < b.Length; i++){Console.WriteLine(b[i]);}Console.WriteLine("反转后:");    //这里并没有使用ref参数,但是也改变了函数外部的数组b,这里数组是一个特例!FanZhuan(b);for (int i = 0; i < b.Length; i++){Console.WriteLine(b[i]);}
public static void FanZhuan(int[] a){int temp;for (int i = 0; i < a.Length / 2; i++){temp = a[i];a[i] = a[a.Length - 1 - i];a[a.Length - 1 - i] = temp;}}

3.params参数

  作用:可变参数,可以输入多个参数,数量可以灵活变化

  示例:

 1 string name = "老王";
 2 ParamsTest(name, 96, 95, 68);   //这里使用了params参数,后面的几个参数表示的是可以输入对应函数的相应参数数组的类型的数据,个数不限
 3
 4         /// <summary>
 5         /// params参数使用范例
 6         /// </summary>
 7         /// <param name="name">传递一个姓名</param>
 8         /// <param name="score">这里表示可以接受多个数组类型的数值</param>
 9         /// params作用是将接受到的数值自动转换为参数的数组元素
10         /// params可变参数必须是最后一个参数,不能放在中间
11         public static void ParamsTest(string name, params int[] score)
12         {
13             int sum=0;
14             for(int i=0;i<score.Length;i++)
15             {
16                 sum += score[i];
17             }
18             Console.WriteLine("{0}的总成绩为:{1};",name,sum);
19         }
20     }

  注意:使用params参数注意两点,可变的参数类型必须和方法中数组的参数类型相同,并且必须放在最后一个!

转载于:https://www.cnblogs.com/1994crazyboy/p/4601233.html

C#学习笔记二(函数高级参数)相关推荐

  1. Lua学习笔记3. 函数可变参数和运算符、转义字符串、数组

    1. Lua函数可以接受变长数目的参数,和C语言类似,在函数的参数列表中使用(...)表示函数可以接受变长参数 lua函数将参数存放在一个table中,例如arg,那么#arg可以获得参数的个数 fu ...

  2. JVM学习笔记二:JVM参数

    所有线程共享的内存主要有两块:堆内存和方法区. 其中堆内存分为两块:新生代Young generation(Eden区.From Survivor区.To Survivor区).老年代Tenured ...

  3. ES6学习笔记二arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  4. 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言

    嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...

  5. springmvc学习笔记二:重定向,拦截器,参数绑定

    springmvc学习笔记二:重定向,拦截器,参数绑定 Controller方法返回值 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加mo ...

  6. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  7. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  8. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  9. JavaScript学习笔记04【高级——DOM和事件的简单学习、BOM对象】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  10. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

最新文章

  1. MONyog_5.6.9.0 key激活|监控MYSQL
  2. 2011年9月19日 面试重点:asp.net运行原理和生命周期
  3. SATA SAS SSD 硬盘介绍和评测
  4. Java有关数组例题_Java基础——数组例题二维数组
  5. HUSTOJ平台的搭建
  6. Day296.原子类 -Juc
  7. nginx http强制跳转https 配置相关信息
  8. 从零开始学习主成分分析
  9. 试玩系列 | 真香!大疆TT无人机编程初体验,教你对它为所欲为!
  10. 7-25 盲盒包装流水线(标准解法+简洁AC)
  11. 在 Windows 10 中更改默认浏览器
  12. iOS11下UITableView侧滑删除详解
  13. chromium 03 修改chromium 编译版本号
  14. 基于用户的协同过滤算法python实现
  15. 研究IdentityServer4遇到天坑signin-oidc报错
  16. 玩骰子的儿童(赫拉克利特)
  17. 小米模式—互联网思维下的中国“智造”
  18. 树莓派 IgH EtherCAT主站搭建
  19. offset如何使用
  20. linux ss 软件,Linux ss 命令详解

热门文章

  1. 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
  2. 利用 portupgrade快速更新通过ports安装的软件
  3. 2021-10-20 Speaking Class
  4. easy and hard things
  5. tableau的2020.3在mac上可以使用,2020.4不行:亲测有效
  6. canvas的特别棒的feature:badge!!!
  7. UNITY ET 框架
  8. 不再有神的概念,将所有存在称之为文明,这很有意思
  9. NodeJs 创建一个简单的服务
  10. Python 调用Java