各位大虾,你们好:主函数实现value=44,是调用Method_1效率高呢,还是调用Method_2效率高呢?为什么呢?
class OutExample
{
    static void Method_1(out int i)
    {
        i = 44;
    }
    static int Method_2( )
    {
        int i=44;
        return i;
    }
    static void Main()
    {
        int value;        Method_1(out value);// value is now 44        value=Method_2();  // value is now 44
        
    }
}

解决方案 »

  1.   

    能直接用返回值的时候 别用out和ref   
    btw:你这块有必要纠结神马性能么
      

  2.   

    out是操作传入的参数对象指针Return是直接返回一个值,你拿到这个值可以压根不赋值,应用场合不一样,有关系么
      

  3.   

    直接return的效率高,out是为了实现多返回值而设定的,还多了一步参数存储堆栈值的过程(多了一次内部赋值)
      

  4.   

    另外,效率再高的东西,都可以被一个外行给写得效率低,比如你return可以直接返回一个值,你却找个变量来临时存储后才返回,这是你自己在降低效率。
      

  5.   

    不需要用out ref的时候 我不会用它 当我方法需要返回多个值的时候 我才会考虑out ref 所以我也就没在这个效率的问题上去纠结过。
      

  6.   

    既然他在比较out和return,那肯定是有返回值,return一个值,也要进行一次赋值,不如out操作指针来的快
      

  7.   

    楼主真是太心细了。。
    当有多个返回值我会用复合类型对象,极少使用out、ref的
      

  8.   


    复合类型是用class呢还是struct呢
      

  9.   


    最近性能很热啊
    有for的性能
    有Hashtable和switch
    有out和return比性能
      

  10.   

    效率可以后考虑。Return应该会是代码更清晰,更容易维护。
      

  11.   

    static int Method_2( )
        {
            return 44;
        }
    当然是直接return 效率高啊,这样写效率更高!
      

  12.   

    顶一下3楼的,直接return 返回值直接在寄存器eax中(如果是32位cpu),操作起来也容易得多
      

  13.   

    我今天准备优化一下DBHelper ,
    写返回SqlDataReader的函数时,我突然有这么一想法:
    public static SqlDataReader GetReader(string sql){}回头在数据层里return得到的形式 和 public static void GetReader(string safeSql,out SqlDataReader ){}直接引用传递得到
    哪个更好,就有了这么个问题了。如果问题不好,大家多多见谅啊。
      

  14.   

    ref和out的用法不一样的,而且也极少的去使用