(1)
Shape shape1 = null;
            for (int i = 0; i < 100000000; i++)
            {
                index = random.Next(3);
                shape1 = Shape.CreateShape(ran[index]);
                totalArea += shape1.GetArea();            }
(2)
            for (int i = 0; i < 100000000; i++)
            {
                index = random.Next(3);
                Shape shape1 = Shape.CreateShape(ran[index]);
                totalArea += shape1.GetArea();            }

解决方案 »

  1.   

    1、 shape1 的作用域
    2、在第一段代码里,shape1的地址只有一个。
    3、在第二段代码里,你创建了 100000000 shape1 对象。个人理解,第一段代码优先考虑。
    仅供参考。期待
      

  2.   

    第二种写法在大括号的时候Shape 对象就已经被释放了
    具体的差别可能要看Shape 对象都需要什么资源
      

  3.   

    一般来说推荐使用第一种方式
    因为shape对象创建了100000000,就需要更多的内存分配
      

  4.   

    取决于Shape.CreateShape方法...“在第一段代码里,shape1的地址只有一个”的说法毫无根据...如果Shape.CreateShape方法内部创建了新的Shape对象(从命名上看这几乎是肯定的),那么第一种写法同样创建了100000000个Shape对象...简单的臆断第一种写法较优的想法同样没有根据...
      

  5.   

    从代码上看来 在内存方面没任何区别
    都是创建100000000个Shape对象