ref和out都对函数参数采用引用传递形式——不管是值类型参数还是引用类型参数,并且定义函数和调用函数时都必须显示生命该参数为

ref/out形式。两者都可以使函数传回多个结果。

ref 类似于 PHP 中在函数参数前的 &

两者区别:

两种参数类型的设计思想不同,ref的目的在于将值类型参数当作引用型参数传递到函数,是函数的输入参数,并且在函数内部的任何改变也

都将影响函数外部该参数的值;而out的目的在于获取函数的返回值,是输出参数,由函数内部计算得到的值再回传到函数外部,因此必须在

函数内部对该参数赋值,这将冲掉函数外部的任何赋值,使得函数外部赋值毫无意义。

表现为:

1、out必须在函数体内初始化,这使得在外面初始化变得没意义。也就是说,out型的参数在函数体内不能得到外面传进来的初始值。

2、ref必须在函数体外初始化。
3、两者在函数体内的任何修改都将影响到函数体外面。

语法:

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n1 = 10;
Incr(ref n1);
Console.WriteLine(n1);
Decr(out n1);
Console.WriteLine(n1);
Console.ReadKey();
} public static void Incr(ref int n1) {
n1++;
} public static void Decr(out int n1) {
n1 = 1;
n1--;
}
}
}

params 关键字可以指定在参数数目可变处采用参数的方法参数,类似于JS 中的 arguments (JS中arguments无需指定,函数内可直接使用)(PHP中 func_get_arg() 或者使用扩展运算符...$args 用一个变量已数组的形式接收所有参数)

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

参数类型必须保持一致

    class Program
{
static void Main(string[] args)
{
fn("hello", "word");
Console.ReadKey();
} public static void fn(params string[] list) {
foreach (string str in list) {
Console.WriteLine(str);
}
}
}

最新文章

  1. 2016 - 1 - 24 NSURLSession (一)
  2. JS魔法堂:关于元素位置和鼠标位置的属性
  3. eclipse的一些初始化设置
  4. React Native知识点
  5. Codeforces Round #367 (Div. 2) Hard problem
  6. 标准IO库函数复习
  7. Android-关于android:scrollbarStyle属性
  8. 小白日记5:kali渗透测试之被动信息收集(四)--theHarvester,metagoofil,meltag,个人专属密码字典--CUPP
  9. 【sqlserver】批量插入10万数据
  10. Keepalived + HAProxy 搭建【第二篇】Keepalived 安装与配置
  11. asp.net mvc 4 项目升级到 asp.net mvc5
  12. 201521123028 《Java程序设计》第13周学习总结
  13. ThreadPoolExecutor中的submit()方法详细讲解
  14. vue+axios 前端实现的常用拦截
  15. Vue2.0增删改查案例(Vue+Less+LocalStorage)
  16. python拟合数据,并通过拟合的曲线去预测新值的方法
  17. [easyUI] lazyload 懒加载
  18. mysql存储过程变量的拼接
  19. python中类的概念
  20. 【转载】TCP/IP 之 大明王朝邮差

热门文章

  1. Linux大牛分享的7道经典面试题和秒收 offer 的技巧
  2. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统
  3. flask 常见关系模板代码
  4. 解决:EXCEL复制粘贴,精度丢失
  5. C#在控制台输出异常所在的行数
  6. Centos6.6升级python2到python3
  7. p4042 [AHOI2014/JSOI2014]骑士游戏
  8. Python 解析配置模块之ConfigParser详解-乾颐堂
  9. linux ubuntu 各目录大小
  10. ceph修复osd为down的情况