在.NET中有什么区别:
Environment.CurrentDirectory
Directory.GetCurrentDirectory()
? 当然,Environment.CurrentDirectory
是可以设置和获取的属性。
还有其他差异吗?
答案 0 :(得分:25)
大卫说:他们做同样的事情。在内部,获取Environment.CurrentDirectory
时,它会调用Directory.GetCurrentDirectory
,而在设置Environment.CurrentDirectory
时,它会调用Directory.SetCurrentDirectory
。
选择一个喜欢并随身携带。
答案 1 :(得分:24)
根据其他答案,没有区别 - Environment.CurrentDirectory
代表对Get
中的Set
和Directory
方法的实施情况。
有一个有趣的风格API设计问题引发了 - 为什么Environment
的设计师认为常规属性是合适的,而Directory
的设计者更喜欢显式Get
和Set
方法?
框架设计指南书中有关于选择属性与方法的相当多的说法,其中一些是available online。在我看来,最相关的部分是(我的重点):
经验法则是方法应该 代表行动和财产 应代表数据。 属性是 优先于方法如果一切 其他是相等的
...
- 使用属性的CONSIDER,如果该成员表示逻辑属性
的类型...
- 在以下情况下,请使用方法而不是属性:
- 操作比字段访问慢几个数量级 将是
我认为所有事情都是明确的Get
和Set
方法更好地代表了这里发生的事情。
答案 2 :(得分:2)
不,没有其他差异。
答案 3 :(得分:0)
Directory.SetCurrentDirectory抛出不少于7个异常,因此检查可能出错的所有内容可能非常耗时。因此,该方法可能符合
"在以下情况下,请使用方法而不是属性:
The operation is orders of magnitude slower than a field access would be"
即使GetCurrentDirectory也有2个可能的例外。在最糟糕的情况下,在网络和/或大量子目录中进行导航这些可能需要几秒而不是几毫秒。