A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© redlong 中级黑马   /  2014-4-5 19:15  /  1171 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 redlong 于 2014-4-5 23:19 编辑

ref和out之间的关系是什么

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

2 个回复

倒序浏览
ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。
对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别。
ref传的参数需要在函数体外初始化, out传参需要在函数体内初始化.

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
一般情况下,向方法传递一个实参时,对应的形参会用实参的一个副本来初始化。也就是说,随便在方法内部进行怎样的修改,都不会影响作为参数来传递的那个变量的原始值。改变的只是实参的一个副本,而不是原始实参。
如果对一个形参附加了ref关键字作为前缀,该参数就会成为实参的一个引用,而不是实参的副本。所以,在方法内对实参的任何操作都会应用于实参,因为形参和实参引用的是同一个对象。且注意在使用ref时,变量必须先赋值才能使用(没有值不能操作)。
out关键字与ref有相似的效果,既都使形参和实参引用同一个对象。所以对实参的任何操作都会应用与实参。不同的是,在向方法传递了一个out参数后,必须在方法内部对其进行赋值。也就是通过方法来初始实参(out的意思便是“输出”)。
另外,在方法定义和使用时都要在参数前加上ref或out关键字。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马