C#非常简单的问题: out和ref

龙翔飞雪 2006-08-04 10:06:34
public string ConsumeTime(int duration, out int threadId){
Console.WriteLine("Test method begins.");
Thread.Sleep(duration);
threadId = AppDomain.GetCurrentThreadId();
return "My execute duration is "+duration;
}

方法声明中的 out, 换成ref, 和不加任何关键字,
这三者有什么区别??
(ref和不加关键字应该是引用传和值传的关系, out有什么用?)
...全文
226 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zouhuiyong 2006-08-04
  • 打赏
  • 举报
回复
补充一下:加out ref的参数在使用的必须通过变量!
juge001 2006-08-04
  • 打赏
  • 举报
回复
out与ref差不多,但更明确是作为输出用的
out参数传递的变量不必初始化,而且必须在方法返回之前为out参数赋值
zouhuiyong 2006-08-04
  • 打赏
  • 举报
回复
1、不加参数:只把值传过去,在方法体内部对该值的修改不会反映到外部调用处。
2、加参数out: 该参数只把地址传过去,即使在外部为该参数赋了值,在方法体内该值也会被弃用,在方法体内对该参数的修改会反映到方法体外的调用处。
3、加参数ref:把值和地址都传过去,在外部对该参数的赋值在方法体内也可以使用,而在方法体内对该参数值的修改也会反映到方法体外。
总结:不加参数的就不说了,使用out 一般用来让一个方法有多个返回值,使用ref的方法就像是个加工厂,对传进来的参数进行加工。
你的,明白?
这些在MSDN上都有比我这更详细的解释!
vshake 2006-08-04
  • 打赏
  • 举报
回复
ref在传入之前必须是初始化的

初始化是什么意思?如果是对象,就必须实例化么?
我刚刚写的ref 也是在内部实例化的~,好象也没什么问题...
terry_12 2006-08-04
  • 打赏
  • 举报
回复
ref必须初始化对象,out在方法中必须实例化对象
viena 2006-08-04
  • 打赏
  • 举报
回复
ref在传入之前必须是初始化的,在方法中可以不对其赋值
viena 2006-08-04
  • 打赏
  • 举报
回复
out与ref差不多,但更明确是作为输出用的
out参数传递的变量不必初始化,而且必须在方法返回之前为out参数赋值
Zine_Alone 2006-08-04
  • 打赏
  • 举报
回复
out 顾名思义就是从里面出来的值.很有用的

和ref类似.不同在于,out参数需在方法内初始化(赋值).

个人理解..

110,533

社区成员

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

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

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