Environment.CurrentDirectory和Directory.GetCurrentDirectory有什么区别?

时间:2009-07-22 11:53:30

标签: c# .net

在.NET中有什么区别:

  • Environment.CurrentDirectory
  • Directory.GetCurrentDirectory()

当然,Environment.CurrentDirectory是可以设置和获取的属性。

还有其他差异吗?

4 个答案:

答案 0 :(得分:25)

大卫说:他们做同样的事情。在内部,获取Environment.CurrentDirectory时,它会调用Directory.GetCurrentDirectory,而在设置Environment.CurrentDirectory时,它会调用Directory.SetCurrentDirectory

选择一个喜欢并随身携带。

答案 1 :(得分:24)

根据其他答案,没有区别 - Environment.CurrentDirectory代表对Get中的SetDirectory方法的实施情况。

有一个有趣的风格API设计问题引发了 - 为什么Environment的设计师认为常规属性是合适的,而Directory的设计者更喜欢显式GetSet方法?

框架设计指南书中有关于选择属性与方法的相当多的说法,其中一些是available online。在我看来,最相关的部分是(我的重点):

  

经验法则是方法应该   代表行动和财产   应代表数据。 属性是   优先于方法如果一切   其他是相等的

     

...

     
      
  • 使用属性的CONSIDER,如果该成员表示逻辑属性   
  • 的类型   
     

...

     
      
  • 在以下情况下,请使用方法而不是属性:      
        
    • 操作比字段访问慢几个数量级   将是
    •   
  •   

我认为所有事情都是明确的GetSet 方法更好地代表了这里发生的事情。

答案 2 :(得分:2)

不,没有其他差异。

答案 3 :(得分:0)

Directory.SetCurrentDirectory抛出不少于7个异常,因此检查可能出错的所有内容可能非常耗时。因此,该方法可能符合

"在以下情况下,请使用方法而不是属性:

The operation is orders of magnitude slower than a field access would be"

即使GetCurrentDirectory也有2个可能的例外。在最糟糕的情况下,在网络和/或大量子目录中进行导航这些可能需要几秒而不是几毫秒。