week6--4月8日

一、复习

        1、以传值方式传递引用类型的实质——传递地址!


二、新课——传引用方式

1、引入

     问题:

            如果需要在方法中使用new运算符对原始数组进行重新分配内存怎么办?

            如果希望通过传递一个值类型参数,在方法内对该参数的修改返回原始参数,怎么办?

   C#解决办法:

         使用refout关键字

2、传引用方式

     ref和out关键字指出一个值类型变量或引用类型变量应该以传引用方式传递。如果使用关键字ref和out通过引用传递变量,则方法能够修改变量本身。

     若要使用ref 参数,必须将参数作为 ref 参数显式地传递到方法。ref 参数的值被传递到 ref 参数。传递到 ref 参数的参数必须最先初始化。

        out指定一个输出参数,被调用的方法会向其赋值。out参数的值不会传递到out参数。不必初始化作为out参数传递的变量。out参数通常用于产生多个返回值的方法中。

注意:引用方式传递并不创建新的存储位置。实参和形参具有相同的存储位置。

            ref参数变量在可以作为引用参数传递之前,必须明确赋值。

3、例题

任务4.8分析——ref



这里:Textref类中的x1,y1,width1,height1作为实参,传递给getXYWH()方法中的形参ax,ay,awidth,aheight,使用了关键字ref。进行的是传引用。

因此:在方法中对这四个形参的改变直接影响对实参的值的改变。


任务4.9分析——out


书上的例子看完了(任务啊),我们来写一个自己,更好的体会一下。


这个例子,通过yunsuan方法,对x和y进行了运算,如果我们使用return将无法同时传递两个值,所以我们运用了ref传引用。这样x1和x其实是一个变量,x1的改变直接影响到x。

考虑,同样是传引用,将ref改成out可以么?——不可以,需要将x和y的初值传递给x1和y1。

改成这样,out就可以了


y不需要有初值,只需要有值传回来,所以可以使用out。


4、ref和out比较

  • ref参数变量在可以作为引用参数传递之前,必须明确赋值。
  • out参数变量可以不被赋值。
  • out参数必须在被调用方法内修改。
  • ref参数可以被修改,也可以不被修改。


5、实训练习

编写程序,模拟投掷硬币,用户按一次Toss按钮则表示“掷”一次硬币,记录硬币的每面出现的次数,并显示结果。程序调用传引用的方法flip,分别统计正反面的次数。

思考:如果模拟硬币的正方面?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值