基类库为目录处理提供了两个类,即Directory类和DirectoryInfo类。Directory类中包含一些静态方法,这些方法可以对任何有关目录的信息进行操作和查询。DirectoryInfo类中包含可用来对单一命名目录进行操作的一系列实例方法和属性。
对一个对象进行实例化然后再使用其中的成员,或是将它作为一个参数传递给方法的调用,在面向对象的程序设计中是一个基本的概念。这与传统ASP中ADO Connection对象和Recordset对象的使用是相似的。如果要用ASP.NET编写一个显示目录内容的方法,我们倾向于让方法接受一个DirectoryInfo对象而不是一个包含该目录名的字符串。这样会使得代码更加整齐,另外如果该方法要使用DirectoryInfo类进行多个操作的话,在性能上还会有一些收益。那么,为什么即使调用程序已经有了DirectoryInfo类的一个实例,还要创建一个新的实例。
使用DirectoryInfo类的另外一个不易察觉的优点就是它能够更加有效地对一个目录进行多种操作。一旦被实例化后,它可以对目录的创建时间和最后修改时间等状态进行保留。当使用后面的成员时,例如Creation Time属性,该状态用来提供结果。相反,Directory类就不能做到这些。每次调用方法时,Directory类都要对目录的信息进行检索。虽然这种操作的成本通常不是很大,但是在CLR中却要求运行时提供代码访问权限。这就意味着运行时必须确保调用方法的代码有权知道目录的有关信息,因此进行代码访问权限的检验的成本就相对较大。如果可能的话,要尽量避免这种情况。