File和FileInfo

我在这里只解释FileFileInfo。我来谈一下他们彼此的利弊。首先说FileInfo,其实为什么说静态类调用要比声明对象速度快呢?主要有两个方面(如果大家对这个无法理解,可以直接记住结论)
       1.当用户实例化一个对象时,其实是在托管堆中分配了一段内存,然后检查这段内存能否容纳下该对象,然后把这个对象放到这块内存上,另外同时又给这个对象分配了两块内存,一块是存储对该对象对方法表的引用,另一块也是一个指针,指向托管堆中下一块地址。
       2.就是垃圾回收,其实面向对象比面向过程语言效率低,最主要就慢在了垃圾回收上,由于垃圾回收涉及到的知识很多,我在这里就不讲解了。如果大家有兴趣的话,我可以以后单独开个话题写。
         但是File静态类有什么缺点呢?不是长时间引用的问题,再次声明。他的慢其实是慢在安全检查。我们都应该知道.NET执行的都是安全代码(这是与CC++的一个很大的区别),如果我们用FileInfo声明了一个对象,那么这个对象只需要执行一次安全检查就好了。但是File由于是静态类,他执行每个方法时都是与上下文无关的,也就说他每执行一次方法就要执行一次安全检查。所以慢就慢在这了。
        
        结论大家一定要记住,如果使用时间较长,那么就应该使用FileInfo来声明一个对象来调用方法。如果只是使用一两次,那么就用File静态类来进行操作。

posted @ 2009-12-25 15:20    阅读(744)  评论(0)    收藏  举报