想请问下,new 实例化对象的时候,是放在程序外部好还是内部好?哪种更节省内存开销,对优化系统系能哪种更好?比如下面是new在程序外部:MyClass1 m = new MyClass1();public string OutStr()
{
  return m.Str1();
}
下面是new在程序内部:public string OutStr()
{
  MyClass1 m = new MyClass1();
  return m.Str1();
}
请问各位朋友,哪种更节省内存开销,对优化系统系能哪种更好?谢谢。

解决方案 »

  1.   

    面向对象的角度:new在程序外部
    类是具有相同属性,或者方法的集合。类中方法的调用一般都会使用相同的外部类方法
    节省内存的角度:new在程序内部
    1、面向对象“封装特性”,使得类被调用时 一般只会使用1个方法
    2、方法调用完毕,实例化的类会被自动回收
      

  2.   

    当然第二种好啦。只要外部没有用到,new一定要放在最里层。
    最里层程序结束后,系统会自动回收。
    这也是好的编程习惯!
      

  3.   

    第一个的资源是程序运行完后系统自动回收
    第二个的资源是函数运行完后回收类具体再什么地方实例化看具体情况而定
    应该new一下需要一定的时间的,如果函数运用很频繁的话建议把类在全局实例化
      

  4.   

    要看你OutStr() 这个方法的使用频率
      

  5.   

    第一种:
    MyClass1 m = new MyClass1();public string OutStr()
    {
      return m.Str1();
    }第一种是在你当前这个类(指this的这个类,不是MyClass1)的构造函数执行前就先创建的(即new),第二种是在调用当前类的实例方法OutStr()的时候创建的。仔细区别这种不同。
      

  6.   

    我很好奇如何“在程序外部new 实例化对象”...
      

  7.   

    不过还是要谢谢这位 "vrhero"  达人的提醒,我会去好好看下你所说的。免得我以后我们这些后辈问题都不敢问了。另外我要告诉你的就是,你这样的人就像癌细胞,是老辣,够厉害,不过你会吞噬或阻止那些新生细胞的生长.
      

  8.   

    new不能说绝对的放哪里?要看你程序的具体情况了
      

  9.   

    MyClass1 m ;public string OutStr()
    {
      m = new MyClass1();  return m.Str1();
    }