向方法传递参的时候,对应的参数通常会用实参的拷贝来初始化。就是说随便在方法内部进行怎样的修改,都不会影响作为参数传递的变量的原始值。

  通过上面的例子我们可以看出来,如果一个方法的参数是引用类型,那么使用哪个参数来进行任何修改都会改变传入的参数所引用的数据,关键在于虽然引用的数据发生了变化,但是传入的参数是没有变的。虽然可以通过参数来修改实参引用的对象,但是不可以修改实参的本身。但是在一些情况下,我们希望方法能够实际的修改一个参数,所以c#给我们提供了ref和out关键字。

  使用ref参数,作用参数的所有操作都会作用于原始实参,应为参数和实参引用同一个对象。通过下面的例子我们可以看出通过使用ref关键字使得传入的参数发生了改变,就相当于我们把上一个方法运算的结果返回了回来。下面的parm++相当于reg++

  out关键字的语法和ref关键字相似,可以为参数附加out前缀,使得参数成为实参的别名,但是时可以不需要初始化的,ref关键字是需要先初始化传入的参数,才能够使用。

转载于:https://www.cnblogs.com/hjxzjp/p/7892658.html

c# ref和out参数相关推荐

  1. C#基础4:函数+ref和out参数

    PS:注释和讲解全在代码中 1. 简单函数 文档注释作用图: using System; using System.Collections.Generic; using System.Linq; us ...

  2. C#ref和out参数

    //ref 关键字使参数按引用传递.其效果是,当控制权传递回调用方法时, //在方法中对参数所做的任何更改都将反映在该变量中.若要使用 ref 参数, //则方法定义和调用方法都必须显式使用 ref ...

  3. 动态使用webservice,以及含有ref类型的参数的问题

    public class WSHelper{/// < summary> /// 动态调用web服务 /// < /summary> /// < param name=& ...

  4. ref 与 out 参数的区别

    Ref 与 Out的区别在于,数组类型的 ref 参数必须由调用方明确赋值,使用数组类型的 out 参数前必须先为其赋值 下边是分别用ref 和Out写的两个例子 using System; usin ...

  5. ref和out参数(2)——ref(C# 参考)

    ref 关键字指示按引用传递的值. 它用在四种不同的上下文中: 在方法签名和方法调用中,按引用将参数传递给方法. 有关详细信息,请参阅按引用传递参数. 在方法签名中,按引用将值返回给调用方. 有关详细 ...

  6. 如何用java语言实现C#中的ref关键字(按引用传递参数)的效果

    https://www.cnblogs.com/nnngu/p/8300164.html 转载于:https://www.cnblogs.com/cnki/p/10409684.html

  7. ref和out 传递参数(C#)

    1.参数传递默认都是传递栈空间里面存储的内容 2.如果添加了ref那么传递的都是栈空间地址,而不再是栈空间里面的内容 3.如果添加了out,那么传递的也是栈空间的地址 1 //写一个方法计算一个int ...

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

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

  9. C#参考之方法参数关键字:params、ref及out

    params 使用 params 关键字可以指定采用数目可变的参数的方法参数. 可以发送参数声明中所指定类型的逗号分隔的参数列表或指定类型的参数数组. 还可以不发送参数. 如果未发送任何参数,则 pa ...

最新文章

  1. php添加开机启动脚本_centos 7.2 添加php7 的 php-fpm 开机启动
  2. 优秀!港大同济伯克利提出Sparse R-CNN: 目标检测新范式
  3. 计算机专业本科毕业转行会计,大学里就业最难的5个专业,毕业后难找工作,很多同学都转行了!...
  4. bzoj3993 [SDOI2015]星际战争 二分答案+网络流检验
  5. python的decode函数报错_python2和python3的编码encode解码decode函数
  6. 卸载 Visual Studio 2005
  7. ASP.NET TreeView控件各个节点总是居中对齐,而不是左对齐的问题
  8. HttpClient读取数据乱码的解决方案
  9. KVM虚拟化技术(理论理解以及虚拟化平台搭建步骤)
  10. deepinIDEA快捷方式无法启动解决
  11. 国内外主流的三维GIS软件
  12. 快捷方式右键菜单、任务管理器等,使用“打开文件所在位置”出现“该文件没有与之关联的应用来执行该操作”的问题解决方案
  13. python写鼠标宏_win操作(1)-键盘鼠标输入
  14. 用matlab求方程组解的三种方法
  15. ThinkPHP6 缩略图上传
  16. 国民阅读经典:谈修养读后感
  17. 基于HTML+JavaScript+CSS计算机实验室预约管理系统网页设计 文档+html源码
  18. 最简单的混合开发教程:APICloud.
  19. ncnn环境搭建二 - windows下Vulkan和ncnn编译安装
  20. Power oj 2781: 上决╇ф的黑科技 (任意模数NTT|拆系数FFT)

热门文章

  1. centos查看网络速率_CentOS 7查看网络带宽使用情况
  2. java内联_JAVA中的内联函数
  3. LeetCode 2012. 数组美丽值求和
  4. LeetCode 1712. 将数组分成三个子数组的方案数(前缀和 + 二分查找)
  5. 天池 在线编程 滑动数独(滑动窗口)
  6. LeetCode 666. 路径和 IV(树的遍历)
  7. c语言(int)x 100,【单选题】下列语句执行后,变量a、c的值分别是( ) int x=182; int a,c;c=x/100;a=x%10;...
  8. Python数据结构常见的八大排序算法(详细整理)
  9. 3.Redis与python交互
  10. python中的文件数据保存