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有什么用?)

解决方案 »

  1.   

    out 顾名思义就是从里面出来的值.很有用的  和ref类似.不同在于,out参数需在方法内初始化(赋值).
      
      个人理解..
      

  2.   

    out与ref差不多,但更明确是作为输出用的
    out参数传递的变量不必初始化,而且必须在方法返回之前为out参数赋值
      

  3.   

    ref在传入之前必须是初始化的,在方法中可以不对其赋值
      

  4.   

    ref必须初始化对象,out在方法中必须实例化对象
      

  5.   

    ref在传入之前必须是初始化的初始化是什么意思?如果是对象,就必须实例化么?
    我刚刚写的ref 也是在内部实例化的~,好象也没什么问题...
      

  6.   

    1、不加参数:只把值传过去,在方法体内部对该值的修改不会反映到外部调用处。
    2、加参数out: 该参数只把地址传过去,即使在外部为该参数赋了值,在方法体内该值也会被弃用,在方法体内对该参数的修改会反映到方法体外的调用处。
    3、加参数ref:把值和地址都传过去,在外部对该参数的赋值在方法体内也可以使用,而在方法体内对该参数值的修改也会反映到方法体外。
    总结:不加参数的就不说了,使用out 一般用来让一个方法有多个返回值,使用ref的方法就像是个加工厂,对传进来的参数进行加工。
    你的,明白?
    这些在MSDN上都有比我这更详细的解释!
      

  7.   

    out与ref差不多,但更明确是作为输出用的
    out参数传递的变量不必初始化,而且必须在方法返回之前为out参数赋值
      

  8.   

    补充一下:加out ref的参数在使用的必须通过变量!