C的按值传递和按引用传递

上传人:夏** 文档编号:487947617 上传时间:2023-07-27 格式:DOC 页数:3 大小:95.50KB
返回 下载 相关 举报
C的按值传递和按引用传递_第1页
第1页 / 共3页
C的按值传递和按引用传递_第2页
第2页 / 共3页
C的按值传递和按引用传递_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《C的按值传递和按引用传递》由会员分享,可在线阅读,更多相关《C的按值传递和按引用传递(3页珍藏版)》请在金锄头文库上搜索。

1、C#的按值传递和按引用传递c#在调用函数有按值传递和按引用传递两种方法。那么这两者有什么区别呢?下面就来简单介绍一下。c#中的按值传递与大多数编程语言相同,只要在调用方法(有些语言可能为函数)的参数括号中写入要传入的变量名就好了,当然,传入的变量类型要与该方法的参数类型一致。这样,我们就把变量的值传到进所调用的方法里了。但是,参数按值传递(c#默认)时,传递的是参数的副本,且副本的改变并不影响调用者的原始变量值,也就是说,如果我们在在方法中改变了该参数的值,按值传递的方法并不会改变原变量的值。那么,如果我们想要改变的是原变量的值,那应该怎么做呢?这时,就需要使用到引用传递了。c#为此提供了关键

2、字ref和out。对于ref,我们在传递中只要在参数前面使用ref时就可以将变量传递给方法,被调方法这时修改的就是原变量的值了。而在参数前面加上out,则可以建立输出参数,告诉编译器这个变元是按引用传入被调方法的,这样,该变元在被调方法中发生的改变都会反映到原变元。当然,ref和out也是有区别的,使用ref型参数时,传入的参数必须先初始化,而对out型参数而言,则要在方法内完成初始化,这是因为ref可以把参数的数值传进去,而out参数会在传进去前先将参数清空。下面就让我们来看一下例子。cl:=lzeRt=eretlceArLilUutP:=Lr:=LmHjtereE:=氓1电1京值17:18

3、!空*23icvoidierTicRefei-enceAndUu+F:xt_wet0intm_parami=5;ixitm_parani2iConsmlWriteLinsni_parsjti伯tl原箱值为:0(tijar沏山);Cuis61WrdteLine(m_par弄不初始化卅);Squ:it_uRef(refnjaram1):Squ:xt_eOut(町口tm_paramZ);Consule.WriteLme调用囲數Squar启m的值为:m口ar:inil);Colieole.WriteLine逼用函数5quareOut后r的值为:Vn,m_paramZWriteLine頁调用函数S虫Co

4、nzoTLe.WriteLine再调用函数TMar逅m的值为:0mjaraml).i|uarg后m的值为:m_ji:=Lt_:=uti2;这里创建了一个ReferenceAndOutParameters类,该类包含了三个方法,如下:EJ27:28S四3031 i-32 ;33;34;35詆30i41i|4B;打按值住递voidSquar亘i口tp:iram打莅引用传谨使用沁tvoid5ijuareUut(outintcmtparam.parMi二pars*wm:OUtp:fJdJTi=3;QUtp:Xt_:iUTl二OUtp:iU_=iJri*QUtj:=Lr:iITl;卄按引用传递,使用i江voi1qu:=Lt_&Re(re1n+rep:=n-:=jtiJ方法SquareRefO将参数refparam的值自乘,由于变元按引用传递,因此将改变调用者的原变元值。方法SquareOut()先将outparam的值赋为6,再自乘,它也将调用者的原变元值。方法Square()也将参数自乘,但因为调用的是原变元的副本,所以并不会改变原变元的值。运行结果如下:Bp|g_P卄咖1的壌妬龍为75M_p呼说呼幷不初绐IE週用函数SguarePef/Sn值为;25闌用函数gguareOut后n的值为:9用函数阴Liare辰ri的値为:25调用函数Square后n的值为:3茨任意龍哦续-

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号