c# ref和out参数

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

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

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

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

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gartner:如何利用数字孪生帮助企业创造价值?

❑ 导 读白皮书预测:到2021年,半数的大型工业企业将使用数字孪生,从而使这些企业的效率提高10%。到2024年,超过25%的全新数字孪生将作为新loT原生业务应用的绑定功能被采用。全文共计1723,预计阅读时间6分钟来源 | 树根…

ThinkingInJava对this关键字的介绍

this 关键字 如果有两个同类型的对象,分别叫作a 和b,那么您也许不知道如何为这两个对象同时调用一个 f()方法: class Banana { void f(int i) { /* ... */ } } Banana a new Banana(), b new Banana(); a.f(1); b.f(2); 若只有一个名叫f()的…

集成电路将成一级学科,这些高校迎来重大机遇!

来源:软科8月4日,国务院发布关于印发《新时期促进集成电路产业和软件产业高质量发展的若干政策》的通知。《新时期促进集成电路产业和软件产业高质量发展的若干政策》在人才政策这一项中提到:进一步加强高校集成电路和软件专业建设&#xff0…

震撼三观:从细胞到宇宙

这是一次高速旅行,每次都以10倍的速度跳跃。从 10的0次方开始(也就是1 米), 然后每次按照10的乘方增加。从10米, 100 米, 1000米,以此类推, 直至巨视世界的无尽。来源:通往知识之路(ID:tongwang…

关于ZipOupputStream添加压缩包常见问题

其实园子压缩解压缩的方法很多,ZipOupputStream这个类的说明很多,我这边也是从网上找的代码,但是我在压缩的时候遇到了常见的两个问题,第一个就是压缩的时候读取压缩包报该压缩包已经在另一个进程打开的bug,这个问题解…

边缘AI芯片市场将在2025年首次反超云端AI芯片市场

边缘AI将利用许多其他新兴技术,为消费者和企业领域的各种新商机铺平道路。来源:雷锋网作者:吴优由于市场对低延迟、数据隐私以及低成本和超节能的可用性的日益关注,预计到2025年,边缘AI芯片组市场将首次超过云AI芯片组…

性能指标分析

文章:架构必会的性能指标及分析策略转载于:https://www.cnblogs.com/Tpf386/p/7904174.html

倪光南:看好鸿蒙系统,坚持生态体系创新才能不被“卡脖子”

图为倪光南院士接受专访来源:澎湃新闻8月7日,在中国信息化百人会2020年峰会上,华为消费者业务CEO余承东关于“麒麟芯片将绝版”的消息一石激起千层浪,在新的国际环境下,国内科技企业应当如何突破重围,自主创…

弦理论三先驱获2020年狄拉克奖

狄拉克奖是国际理论物理中心(International Centre for Theoretical Physics,ICTP)为纪念理论物理学家狄拉克而在1985年设置的奖项,被视为理论和数学物理领域的最高荣誉之一。近日,ICTP 在意大利 Trieste 宣布了2020年…

windows c++ 内存映射大文件问题记录

MapViewOfFile()使用时总是报错1132,是因为起始位置大小要是64k的倍数。 例如:LPVOID pFileBlock MapViewOfFile(OpenMap , FILE_MAP_ALL_ACCESS // 注意,和createfile要一致 , 0 , dBegin …

CCAI 2020 | 黄铁军:“仿真主义”下的人工智能发展之路

来源:中国人工智能学会在人工智能发展的60多年中,大致有四种方法来实现某些人工智能:符号主义,联结主义,行为主义和统计学,它们分别从不同的角度抓住了“智能”的一些特点,因此各自引领着一个时…

对new int[]()的理解(转载)

new(多个对象)数组 new分配的对象,不管单个对象还是多个对象的分配,都是默认初始化。但可以对数组进行值初始化,方法就是:在大小之后添加一对空括号。 int *p1 new int[10]; // 10个未初始化int int *p2 new int[10](); // …

事件(二):事件处理程序

click,load,mouseover都是事件的名字,而响应某个事件的函数就叫做事件处理程序(或事件侦听器)。事件处理程序的名字以on开头,onclick,onload 事件处理程序(html事件处理程序,dom0级事件处理程序&#xff0c…

物联网激荡MEMS传感器浪潮

来源:第三代半导体联合创新孵化中心物联网悄然而至。如今,物联网已进入跨界融合、集成创新和规模化发展新阶段,将为经济社会发展注入新活力,培育新动能。物联网在交通、物流、环保、医疗、安防、电力等领域的应用逐渐得到规模化验…

如何判断是linux/windows库,module或程序debug还是release(转)

linux: readelf -S xxx.a |grep "\.debug*" 如果有输出, 是debug, 没有是release windows: dumpbin /DEPENDENTS xx.dll, 结果输出中有MSVCRTD.dll的是debug版本. 为了脚本自动判断, 可用powergrep等工具自动分拣. .lib和我们的编译选项有…

发布功能完成。

编写要求登录的装饰器from functools import wraps def loginFirst(func): #参数是函数 wraps(func) def wrapper(*args, ** kwargs): #定义个函数将其返回 #要求登录 return func(*args, ** kwargs) return wrapper #返回一个函数 应用装饰器,要求在发布前进行登录…

git clone报错

问题:error: RPC failed; curl 18 transfer closed with outstanding read data remaining 方法:(一般http方式会用到) $ git clone 仓库地址 --depth 1 $ cd 项目目录 $ git fetch --unshallow 附带:指定分支命令 …

《自然》《科学》相继发文批评质疑:俄罗斯注册新冠疫苗“让众人面临风险”...

来源:环球科学编译丨杨心舟8月11日,俄罗斯总统普京在与政府成员举行会议时透露,俄罗斯已经注册世界第一种新冠肺炎疫苗。普京表示,这款疫苗非常有效,能够形成稳定的免疫力并且已通过所有的检查,并且自己的女…

翻译连载 | 附录 A:Transducing(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...

原文地址:Functional-Light-JS原文作者:Kyle Simpson-《You-Dont-Know-JS》作者关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTML 最坚实的梁柱;分享,是 CSS 里最闪耀的一瞥…

python 去除不可见字符\x00

读取出来的字节:testa b‘testa\x00’ 去掉\x00:testa.decode().strip(b\x00.decode()) 经测试多个\x00也可以去掉