ref和out都是表示按引用传递。与指针类似,直接指向同一内存。

按值传递参数的方法永远不可能改变方法外的变量,需要改变方法外的变量就必须按引用传递参数。

传递参数的方法,在C语言里,用指针。在C#里,可以用指针,但是更通常也更安全的做法就是用ref。

namespace ConsoleApplication1
{
class Program
{
int Add(int x,int y)
{
x = x + y;
return x;
}
int Add(ref int x,int y)
{
x = x + y;
return x;
}
int Add(int x,int y,out int z)
{
z = x + y;
return z;
}
int Add(params int[] x)//可变长参数数组
{
int result = ;
for (int i = ; i < x.Length; i++)
{
result += x[i];
}
return result;
}
static void Main(string[] args)
{
Program p = new Program();
int x = , y = ;
int z;
Console.WriteLine("值参数" + p.Add(x, y));
Console.WriteLine(x);//30,方法内的x与外部x不是同一内存
Console.WriteLine("ref参数" + p.Add(ref x, y));
Console.WriteLine(x);//70,引用传参,指向同一内存
Console.WriteLine("out参数" + p.Add(x, y, out z));
Console.WriteLine("params参数" + p.Add(, , , ));
}
}
}

关于params,参考 https://blog.csdn.net/wcc27857285/article/details/80991824

ref、out的更多内容,参考 https://www.cnblogs.com/vd630/p/4601919.html

ref、out参数的更多相关文章

  1. 含有ref out 参数 的方法反射 Emit 与 普通

    反射中很多朋友应该屡屡被带有ref out参数的方法折腾 当使用正常反射一个方法时候: 代码如下调用一个后期绑定方法MakeByRefType 就行了 MemberInfo test = typeof ...

  2. ref - 按引用传递参数

    传递的是引用 在 形参 实参前 加ref

  3. c#.net中参数修饰符ref,out ,params解析

    params ============================================================================================= ...

  4. out参数,ref参数,params参数数组

    params参数数组 params关键字可以为方法指定数目可变的参数.params关键字修饰的参数,可以传入任意数目的同类型参数,甚至可以不传入参数. 不过params修饰的参数必须是方法的最后一个参 ...

  5. ref 参数

    当使用ref 作为参数赋值时,ref 得需要初始化,就是在从新定义一下 参数的值,下面有列子: 在控制台中运行如下: //定义一个方法,两个参数 i和a . public static void ge ...

  6. ref引用类型,数组型参数,out输出参数

    ref和out的相同点和不同点 共同点:都是引用传递不同点:ref的参数在调用之前一定要赋值,在方法调用的过程中可以不要赋值.    out的参数在调用之前可以不赋值,在方法调用的过程中一定要赋值. ...

  7. 参数修饰符ref,out ,params的区别

    参数修饰符ref,out ,params的区别 C#中有三个关键字-ref,out ,params,可是这三个之间的区别你都明白了吗? 那么我们就来认识一下参数修饰符ref,out ,params吧, ...

  8. 工作中的趣事:聊聊ref/out和方法参数的传递机制

    0x00 前言 我在之前的游戏公司工作的时候,常常是作为一只埋头实现业务逻辑的码农.在工作之中不常有同事会对关于编程的话题进行交流,而工作之余也没有专门的时间进行技术分享.所以对我而言上家虽然是一家游 ...

  9. C#方法中参数ref和out的解析

    一.C#方法中参数类型 有4种参数类型,有时候很难记住它们的不同特征,下图对它们做一个总结,使之更容易比较和对照. 二.C#方法中的参数 1.值参数 使用值参数,通过复制实参的值到形参的方式把数据传递 ...

  10. C#中的out 参数,ref参数,值参数

    大家可能在编码中或多或少的使用过out的ref,但是是否注意过他两的详细用法以及区别? 本文想介绍下详细介绍下out参数,ref参数以及一般值参数. 值参数 在使用参数时,把一个值传递给函数使用的一个 ...

随机推荐

  1. vue路由懒加载 及import

  2. 移动开发基础-学习笔记二-字体图标、less、bootstrap入门

    1.字体图标 1.字体图标都是用svg图片 1.svg图片不失真 2.svg图标由设计师提供 3.为了减少网络请求,会把svg图标转换成字体图标,放到字体文件中,通过字体库的方式使用 2.制作步骤 1 ...

  3. RobotFramework第二篇之web自动化

    (1)安装seleniumLibrary库: pip install --upgrade --pre robotframework-seleniumlibrary 使用第三方库关键字: (1)sett ...

  4. windowsserver 2019系统安装教程

    windowsserver2019和windowsserver2016一样也分两个版本标准版和数据中心版. 1.插入系统光盘 2.选择安装版本一般选择带桌面体验的,要不安装成功后没有桌面. 3.设置分 ...

  5. LA3971 组装电脑

    思路:二分,就是在不超过b的预算下,使得品质的最小值最大化.关键还是判断函数吧. 假设答案为x,判断函数,就是每一个种类的配件的品质最基本的品质要大于x,然后找出最小的值.这样的配件品质之和的价格要小 ...

  6. 1 Openwrt无线中继设置并访问外网

    https://www.cnblogs.com/wsine/p/5238465.html 配置目标 主路由器使用AP模式发射Wifi 从路由器使用Client模式接受Wifi 从路由器使用Master ...

  7. diskpart 的简单使用

  8. SCOI2019酱油记

    这玩意儿咕了--留坑待填

  9. BAT面试题:请使用递归构建N叉树

    题目要求: 现在我们拥有全国的省.市.县.镇的行政信息,比如 浙江省 -> 杭州市 -> 西湖区 --> xx街道,请将这些信息构建成一棵树,根节点为全国,叶子节点为镇. 我的误解: ...

  10. 关于H5从PC端切换到移动端,屏幕显示内容由横向转为竖向的研究!

    1.前言: 在项目中,我们常会遇见在手机端需要横屏观看的效果,而在pc端则默认切换到竖屏的样式. 或者是,UI提供的图是一个长图,但是在移动端我们需要让这个图在手机横屏时显示. 以上两个都需要我们实行 ...