C#方法参数传递机制
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
C#方法参数传递机制的更多相关文章
- 我的Java开发学习之旅------>Java语言中方法的参数传递机制
实参:如果声明方法时包含来了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时传给形参的参数值也被称为实参. Java的实参值是如何传入方法?这是由Java方法的参数传递机制来控制的,Java ...
- 深入理解Java中方法的参数传递机制
形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...
- Java方法之参数传递机制
目录 Java方法之参数传递机制 基本数据类型 引用数据类型 综合练习 总结 Java方法之参数传递机制 Java方法中如果声明了形参,在调用方法时就必须给这些形参指定参数值,实际传进去的这个值就叫做 ...
- JavaSE 面试题: 方法的参数传递机制
JavaSE 面试题 方法的参数传递机制 import java.util.Arrays; public class Test { public static void main(String[] a ...
- Java高频经典面试题(第一季)四:方法的参数传递机制
考点? 方法的参数传递机制 String,包装类等对象的不可变性 方法的参数传递机制: ①形参是基本数据类型 传递数据值 ②实参是引用数据类型 传递地址值 特殊的类型:String.包装类等对象不可变 ...
- 深入剖析C/C++函数的参数传递机制
2014-07-29 20:16 深入剖析C/C++函数的参数传递机制 C语言的函数入口参数,可以使用值传递和指针传递方式,C++又多了引用(reference)传递方式.引用传递方式在使用上类 ...
- python中的*和**参数传递机制
python的参数传递机制具有值传递(int.float等值数据类型)和引用传递(以字典.列表等非值对象数据类型为代表)两种基本机制以及方便的关键字传递特性(直接使用函数的形参名指定实参的传递目标,如 ...
- Java方法调用机制
最近在编程时,修改方法传入对象的对象引用,并没有将修改反映到调用方法中.奇怪为什么结果没有变化,原因是遗忘了Java对象引用和内存分配机制.本文介绍3个点: ① 该问题举例说明 ② 简要阐述Java内 ...
- 浅谈Java参数传递机制
Java参数传递 才疏学浅,今天才知道Java中方法的参数是可以传递对象引用进去的. Java的参数传递机制很简单,其实就是值传递. 所谓值传递,也就是我们在给方法传递一个参数的时,传递的 ...
随机推荐
- 结构struct
1.结构变量 1)定义结构类型 struct student { char *name; int age; int score[3]; }; 2)定义结构变量 struct student stu1, ...
- 常用的WEB服务
1.股票行情数据 Web Service(支持香港.深圳.上海基金.债券和股票:支持多股票同时查询) http://www.webxml.com.cn/WebServices/StockInfoWS ...
- localStorage 2016/12/26
在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localSt ...
- C#中XML和json互相转换
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xm ...
- 工作需求----表单多选框checkbox交互
关于多选框,反选及选取几个: 1.html内容 <!--begin checkbox--> <div class="c_n_manage_tablexx"> ...
- ARM: STM32F7: hardfault caused by unaligned memory access
ARM: STM32F7: hardfault caused by unaligned memory access ARM: STM32F7: 由未对齐的内存访问引起的hardfault异常 Info ...
- Shell Script (2) - global.sh
cd web/ui npm run e2e-dev -- -i 1 "should be able to add function with argument to a ingredient ...
- 开启LOH压缩?
我们知道.NET CLR的GC堆中有一种特殊的堆,它专门存放超过85000byte的对象(详见这里),这就是大对象堆(LOH). 在.NET Framework 4.5.1之前,微软并没有提供对LOH ...
- node.js+socket.io安装
最近做安卓遇到一个网络包的bug,服务端使用node做的,通讯用socket.io,但是服务端没法调试,没办法,还是自己搭建一个服务器端吧,索性买了阿里云的ecs测试,之前也配置过node+socke ...
- 在ubuntu中安装psutil
环境:ubuntu 16.04 LTS + python 2.7/3.5共存 + psutil 4.3.0 1.sudo apt-get install python3-dev # 先把python3 ...