1:value(值传递)、ref(引用传递)、out(输出传递)

ref和out使用效果上面是等效的,它们的区别在于:参数标记为ref,那么必须在调用函数之前初始化参数的值;参数标记为out,调用函数之前不需要初始化对象,但调用的函数必要在函数返回之前为对象赋值

using System;//value(值传递)、ref(引用传递)、out(输出传递)
public class Test
{public static void ValueFun(int i){i++;}public static void RefFun(ref int j){j++;}public static void OutFun(out int k){k = 0;//使用out关键字,必须参数初始化k++;}static void Main(){int i = 0;ValueFun(i);//i的值是实参的一个副本,实参i不会改变Console.WriteLine(i);int j = 0;RefFun(ref j);//指向同一块内存,实参j的值会改变Console.WriteLine(j);int k;OutFun(out k);//和ref关键字等效Console.WriteLine(k);}
}

2:params可变参数

params主要的用处是在给函数传参数的时候用,就是当函数的参数不固定的时候。

在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。

关于参数数组,需掌握以下几点:

  (1)若形参表中含一个参数数组,则该参数数组必须位于形参列表的最后

  (2)参数数组必须是一维数组

  (3)不允许将params修饰符与ref和out修饰符组合起来使用

  (4)与参数数组对应的实参可以是同一类型的数组名,也可以是任意多个与该数组的元素属于同一类型的变量

  (5)若实参是数组则按引用传递,若实参是变量或表达式则按值传递

  (6)用法:可变的方法参数,也称数组型参数,适合于方法的参数个数不知的情况,用于传递大量的数组集合参数;当使用数组参数时,可通过使用params关键字在形参表中指定多种方法参数,并在方法的参数表中指定一个数组,形式为:方法修饰符 返回类型 方法名(params 类型[] 变量名)

using System;//可变数量参数
//关键字params后面必须是一个数组
public class Test
{static int addInt(params int[] values){int sum = 0;foreach (int i in values){sum += i;}return sum;}static void Main(){int[] arr = {1,2,3,4,5,6,7,8,9};Console.WriteLine(addInt(arr));}
}转自:http://www.cnblogs.com/ArmyShen/archive/2012/08/27/2657899.html

转载于:https://www.cnblogs.com/doubleyong/p/4641580.html

C#方法参数传递机制相关推荐

  1. 两种参数类型_深入理解Java中方法的参数传递机制

    形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...

  2. java传递实例_Java方法的参数传递机制实例详解

    本文实例讲述了Java方法的参数传递机制.分享给大家供大家参考,具体如下: 参数传递机制 对于程序设计语言来说,一般方法(函数)的参数传递有两种:按值传递和按引用传递. 按值传递意味着当将一个参数传递 ...

  3. java中gettext方法_深入理解Java中方法的参数传递机制

    形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...

  4. 【Java】方法中的参数传递机制的具体体现

    Java方法中的参数传递机制的具体体现 具体来说是两种:值传递和址传递 以swap(Object obj1,Object obj2)方法为例: 1:如果传递进去的是基本数据类型参数得值,那么再调用sw ...

  5. python参数传递_python中的*和**参数传递机制

    python的参数传递机制具有值传递(int.float等值数据类型)和引用传递(以字典.列表等非值对象数据类型为代表)两种基本机制以及方便的关键字传递特性(直接使用函数的形参名指定实参的传递目标,如 ...

  6. java方法调用机制_Java方法调用机制 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...

    最近在编程时,修改方法传入对象的对象引用,并没有将修改反映到调用方法中.奇怪为什么结果没有变化,原因是遗忘了Java对象引用和内存分配机制.本文介绍3个点: ① 该问题举例说明 ② 简要阐述Java内 ...

  7. Java实验方法参数传递与递归_4.3类的结构之二:方法(return,重载,可变个数形参,值传递,递归)...

    类的设计中,两个重要结构之二:方法 * 方法:描述类应该具有的功能. * 比如:Math类:sqrt()\random()\ .. * Scanner类:nextXxx() .. * Arrays类: ...

  8. python 函数参数传递机制_Python函数参数传递机制(超级详细)

    Python中,函数参数由实参传递给形参的过程,是由参数传递机制来控制的.通过学习<Python函数值传递和引用传递>一节我们知道,根据实际参数的类型不同,函数参数的传递方式分为值传递和引 ...

  9. jQuery 中的事件参数传递机制

    jQuery 中的事件参数传递机制 jQuery事件参数传递模型: 注:trigger 不能与 bind 的原生函数一样,使用同样的参数传递形式: 参数传递一: $(document).ready(f ...

最新文章

  1. 重磅|我国科学家成功研制全球神经元规模最大的类脑计算机
  2. java 连接 postgresql_java如何连接数据库并对其操作(以PostgreSQL为例)
  3. flash也玩p2p
  4. 关于Net开发中一些SQLServer性能优化的建议
  5. dom文档对象模型图
  6. python编程入门-Python编程入门电子书教程,看这几个就够了
  7. inDesign教程,如何设置打印出血?
  8. 复旦大学计算机a类专业,如何看待浙大A类学科39个,全国第一,录取分却比复旦、上交低?...
  9. 凸包算法-流程及代码简述
  10. c语言error lnk 2005,易语言5.71静态编译问题LIBC.lib(crt0dat.obj) : error LNK2005:
  11. uib-datepicker-popup使用
  12. “九个字、一只手、专有云”,有孚网络的云上之路
  13. em在聊天中是什么意思_EM是什么意思?有几种解释?
  14. 【趣题】红蓝眼岛居民自杀事件
  15. AT32F437VM SPI驱动AT7456E OSD芯片
  16. 编译 ORB-SLAM2/3的ROS工程造成(You should double-check your ROS_PACKAGE_PATH...)
  17. SpringBoot 启动类 @SpringBootApplication 注解 以及执行流程
  18. 实现一个 柯里化函数
  19. 【C语言】七段显示器输出数字
  20. Golang边无际一面

热门文章

  1. IOS UI Automation 学习之常用类,方法和模拟手势
  2. PHP正则表达式学习(一) 模式修正符
  3. java 循环笔记_Java笔记之嵌套循环1
  4. NotificationManager滑动不退出_退出支付宝的相互宝大病互助计划居然需要8个步骤!...
  5. 苹果手机如何降级系统
  6. !DOCTYPE html的内容讲解
  7. mfc listbox删除多行
  8. java 把文件打包成zip_java 文件流的处理 文件打包成zip
  9. android插件数字,Android自定义控件实现带文本与数字的圆形进度条
  10. 在linux中 与 的区别,在linux中,和, |和|| , 与 的区别