巧解传值与传地址

巧解传值与传地址

ID:33702821

大小:92.50 KB

页数:4页

时间:2019-02-28

巧解传值与传地址_第1页
巧解传值与传地址_第2页
巧解传值与传地址_第3页
巧解传值与传地址_第4页
资源描述:

《巧解传值与传地址》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、巧妙理解方法的值参数与引用参数方法的传值与传地址一直是困扰很多初学者的问题,下面有一种容易理解的方法,先看下面的程序:classProgram{staticvoidSwapValue(inta,intb){inttemp=a;a=b;b=temp;}staticvoidMain(string[]args){inta=100;intb=10;Console.WriteLine("执行传值函数前a={0},b={1}",a,b);SwapValue(a,b);Console.WriteLine("执行传值函数后a={0},b={1}",a,

2、b);Console.ReadLine();}}运行的结果为:可见,调用方法SwapValue(inta,intb)后,实参a,b的值并没有改变.参数可以通过引用或值传递给方法。在变量通过引用传递给方法时,被调用的方法得到的就是这个变量,所以在方法内部对变量进行的任何改变在方法退出后仍旧发挥作用。而如果变量是通过值传送给方法的,被调用的方法得到的是变量的一个副本,也就是说,在方法退出后,对变量进行的修改会丢失。对于复杂的数据类型,按引用传递的效率更高,因为在按值传递时,必须复制大量的数据。现在举例便于理解:建立两个文件夹SwapValu

3、e和Main在Main文件夹中建立两个文本文件a和b,存放的类容分别是100和10由于如果变量是通过值传送给方法的,被调用的方法得到的是变量的一个副本,也就是说复制了一份,那么,把刚才Main文件夹下面的a和b两个文件都复制到SwapValue文件夹下面然后把文件a的类容改为10,文件b的类容改为100,这类似方法的值传递,改变数值是在复制的副本上进行更改的,显然Main文件夹的类容不会改变.再看看传引用参数的程序示例:classProgram{staticvoidSwapRef(refinta,refintb){inttemp=a;a

4、=b;b=temp;}staticvoidMain(string[]args){inta=100;intb=10;Console.WriteLine("执行传址函数前a={0},b={1}",a,b);SwapRef(refa,refb);Console.WriteLine("执行传址函数后a={0},b={1}",a,b);Console.ReadLine();}}运行结果为:结果a和b的值互换了.通过值传送变量是默认的,也可以迫使值参数通过引用传送给方法。为此,要使用ref关键字。如果把一个参数传递给方法,且这个方法的输入参数前带有

5、ref关键字,则该方法对变量所作的任何改变都会影响原来对象的值.举例如下,另外建立一个文件夹SwapRef在SwapRef文件夹下面建立两个快捷方式,分别指向Main文件夹中的a和b文件然后把SwapRef文件夹下面的a文件类容改为10,b文件类容改为100保存,再打开Main下面的a文件,发现类容改了,成来了10,b类容也改了,成了100.快捷方式其实就是指向原文件的地址的引用,它和原文件共用一块区域.这与引用参数有相似之处,引用参数并不创建新的存储单元,它与方法调用中的实在参数变量同处一个存储单元,因此,再方法内对形参的修改就是对外

6、部实参变量的修改.这样就容易理解多了吧.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。