1  XmlDocument document = new XmlDocument ();
 2  document.Load(@"C:\book.xml");
 3  XmlElement element = document.DocumentElement; 请问第三行:
 
XmlElement element = document.DocumentElement;
 
如果写成:
 XmlElement element = new XmlElement();
 element = document.DocumentElement;
 
这两种写法有什么区别么?
 
new关键字在什么情况下可以省略呢?
 
比如: String str = 99; 也是省略了new?

解决方案 »

  1.   


    XmlElement element = document.DocumentElement;//使用引用对象直接把element的引用地址修改成document的属性DocumentElement的地址
     
    如果写成:
     XmlElement element = new XmlElement();//先声明变量,创建实例,在内存中开辟空间,
     element = document.DocumentElement;//再修改引用地址为document的属性DocumentElement地址new出来的玩意只是增加了gc的负荷  可能IL中会直接处理了
     
      

  2.   

    反编译发现,new的一行代码保留了,所以,只是增加了GC的工作 其他没有作用。
    你要创建新实例的时候才会用new,只是赋值操作时不用new来实例化。
    比如 User u1=new("张三"); 你还需要一个李四的时候 需要再new一个。
    但是 你另外一个变量还是需要张三,你可以直接拿来用,如下
    User u2=u1;  只是引用了原来对象的内存地址。
    在方法中有返回值的时候,一般都是在方法中创建完了对象,直接赋值给变量就可以,也是不许要再new一次的
      

  3.   

    感谢ls解答,这么说如果在能省略new的情况下,应尽量省略以提高效率?
      

  4.   

    创建新实例的时候才会用new,只是赋值操作时不用new