黑马程序员技术交流社区

标题: ref和out之间的关系是什么 [打印本页]

作者: redlong    时间: 2014-4-5 19:15
标题: ref和out之间的关系是什么
本帖最后由 redlong 于 2014-4-5 23:19 编辑

ref和out之间的关系是什么
作者: lmm    时间: 2014-4-5 20:55
ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。
对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别。
ref传的参数需要在函数体外初始化, out传参需要在函数体内初始化.
作者: 崔征    时间: 2014-4-7 10:30
一般情况下,向方法传递一个实参时,对应的形参会用实参的一个副本来初始化。也就是说,随便在方法内部进行怎样的修改,都不会影响作为参数来传递的那个变量的原始值。改变的只是实参的一个副本,而不是原始实参。
如果对一个形参附加了ref关键字作为前缀,该参数就会成为实参的一个引用,而不是实参的副本。所以,在方法内对实参的任何操作都会应用于实参,因为形参和实参引用的是同一个对象。且注意在使用ref时,变量必须先赋值才能使用(没有值不能操作)。
out关键字与ref有相似的效果,既都使形参和实参引用同一个对象。所以对实参的任何操作都会应用与实参。不同的是,在向方法传递了一个out参数后,必须在方法内部对其进行赋值。也就是通过方法来初始实参(out的意思便是“输出”)。
另外,在方法定义和使用时都要在参数前加上ref或out关键字。




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