关于REF OUT 的深入问题

whoisyoung 2006-06-10 11:31:40
REF 传递直类型参数的时候
是不是在托管堆上创建引用指向这个值,还是宁外创建值得副本?
那这个引用是在什么时候被销毁的呢
OUT 在输出值类型的时候又是怎样的一个过程能?
...全文
134 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenbaomsn 2006-06-10
  • 打赏
  • 举报
回复
当定义声明并定义一个变量的时候,实际是就用这个变量代表内存的的一块区域(位置和大小),按值传递会把这个块区域的内容复制到另一个变量的区域,按引用传递是再用一个变量代表主调过程中的的那块区域。按值调用的那形参被赋后用在子过程结束后即被销毁,按引用调用的那个在最后一个引用超过期定义范围后被销毁。
viena 2006-06-10
  • 打赏
  • 举报
回复
//这个引用地址什么时候创建 什么时候销毁

变量的生存期只在它的作用域内,比如循环内、过程内、类内
Ivony 2006-06-10
  • 打赏
  • 举报
回复
ref就是按引用传递,与地址无关。
whoisyoung 2006-06-10
  • 打赏
  • 举报
回复
我想问一下REF 传值类型 那里来的引用地址
这个引用地址什么时候创建 什么时候销毁
kssys 2006-06-10
  • 打赏
  • 举报
回复
参看:http://community.csdn.net/Expert/TopicView3.asp?id=4800740
Ivony 2006-06-10
  • 打赏
  • 举报
回复
两个是一样的效果,只是C#在检查语法的时候有所不同。

函数内部:
ref传进来的参数,可以直接使用,out在没赋值前不能使用:
void f( ref int i )
{
Console.Write( i );
}

ref传进来的参数,可以不必赋值,out则在函数执行完之前必须赋值。

函数外部:
如果一个变量没有赋初值,不能作为ref传送但可以作为out传送。
Patel2008 2006-06-10
  • 打赏
  • 举报
回复
楼上的兄弟
仔细看看一楼的大哥怎么说的吧

跟你表达的不是一个意思吗?
mmcl 2006-06-10
  • 打赏
  • 举报
回复
关于ref和out的区别,一楼说反了.

当在方法的输入参数前面加上out关键字时,传递给该方法的变量可以不被初始值初始化。
Reeezak 2006-06-10
  • 打赏
  • 举报
回复
关于ref和out的区别,一楼已经说得挺清楚的了,不再重复


但我补充一点:
dotNET中尽量不要使用"地址",用"引用"(不仅是名字上的区别)
因为前者不安全,后者是安全的(主要包括指向和类型的区别)


liuqian0415 2006-06-10
  • 打赏
  • 举报
回复

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧