黑马程序员技术交流社区

标题: 在方法中传参数 out ref [打印本页]

作者: 杨礼文    时间: 2012-3-8 21:11
标题: 在方法中传参数 out ref
本帖最后由 杨礼文 于 2012-3-9 14:25 编辑

在方法后面的括号内定义变量,叫作定义这个方法的参数.这里定义的变量用于接收调用者传过来的数据.
注意:如果一个方法一旦有参数,那么调用者就必须传参数,并且传参数的个数与对应位置上的类型必须一致.



out  是传出
ref  传入且传出
return   返回一个值



求更具体更详细的说明
作者: 原世功    时间: 2012-3-8 22:47
简单点可以理解为:
ref 要求变量必须在传递之前进行初始化
而out返回前,必须对变量赋值。(out参数在进入方法的时候,C#会自动清空它的一切引用和指向,所以必需先要为该参数赋值。)
作者: 原世功    时间: 2012-3-8 22:49
复杂点的理解
第一个区别: out 参数在进入方法(函数)时后清空自己,使自己变成一个干净的参数,也因为这个原因必须在方法返回之前或再使用out参数前为 out 参数赋值(只有地址没有值的参数是不能被.net接受的);而ref参数是不需要在被调用方法使用前先赋值的,甚至也可以被调用方法中不改变ref参数的值,这都不会引起编译错误。

第二个区别:ref参数在使用前必需初始化,而out不需要。

由上边两个区别可以引申一下,out参数只进不出,ref参数有进有出。在用法上概括一下就是:out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。



另一种理解:
ref是按地址引用 ,但是这个对于文件来说就是无效的
因为文件本来就是按地址引用的,所以如果你的参数是文件时,这一个不用考虑,像int 之类的就要考虑一下

out是取出的意思,在泛型中用的较多,意思是给定一个key,把KEY的VALUE赋给out的参数



ref和out都是按引用传递

这是我以前看杨老师视频之后,又百度了ref和out总结出来的,希望可以帮助到你!
作者: 杨礼文    时间: 2012-3-9 14:25
原世功 发表于 2012-3-8 22:49
复杂点的理解
第一个区别: out 参数在进入方法(函数)时后清空自己,使自己变成一个干净的参数,也因为这 ...

非常感谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2