C# Environment.CurrentDirectory和Directory.GetCurrentDirectory之间有什么区别?
在.NET中,以下各项之间的区别是什么:C# Environment.CurrentDirectory和Directory.GetCurrentDirectory之间有什么区别?,c#,.net,C#,.net,在.NET中,以下各项之间的区别是什么: Environment.CurrentDirectory 目录。GetCurrentDirectory() 当然,Environment.CurrentDirectory是一个可以设置和获取的属性 还有其他区别吗?没有,没有其他区别。正如大卫所说:他们做同样的事情。在内部,当获取环境.CurrentDirectory时,它将调用目录.GetCurrentDirectory,当设置环境.CurrentDirectory时,它将调用目录.SetCurre
Environment.CurrentDirectory
李>目录。GetCurrentDirectory()
Environment.CurrentDirectory
是一个可以设置和获取的属性
还有其他区别吗?没有,没有其他区别。正如大卫所说:他们做同样的事情。在内部,当获取
环境.CurrentDirectory
时,它将调用目录.GetCurrentDirectory
,当设置环境.CurrentDirectory
时,它将调用目录.SetCurrentDirectory
只需选择一个最喜欢的并随它去。根据其他答案,没有区别-实现
环境。CurrentDirectory
委托目录中的获取
和设置
方法
这引发了一个有趣的风格API设计问题-为什么环境
的设计者认为常规属性是合适的,而目录
的设计者更喜欢显式的获取
和设置
方法
《框架设计指南》一书中对选择属性和方法有相当多的论述,其中一些是。在我看来,最相关的部分是(我强调):
经验法则是方法应该
表示动作和属性
应该表示数据。属性是
如果一切正常,则首选方法
其他条件相同
- 如果成员表示逻辑属性,请考虑使用属性
同类
- 在以下情况下,请使用方法而不是属性:
- 该操作比现场访问慢几个数量级
会是
我的观点是,显式的Get
和Set
方法更好地代表了这里发生的事情。Directory.SetCurrentDirectory抛出不少于7个异常,因此检查所有可能出错的事情可能会非常耗时。因此,该方法可能符合
“在下列情况下,请使用方法而不是属性:
The operation is orders of magnitude slower than a field access would be"
即使是GetCurrentDirectory也有2个潜在的例外。在最坏的情况下,通过网络和/或有大量子目录导航这些可能需要几秒钟而不是几毫秒。+1我不经常在我发布的问答中投票,但参考框架设计指南值得一试。我还我同意你的结论。我认为这更多的是一个逻辑上的差异造成的。它是环境上下文中的一个自然属性,但在目录中,它更像是一个“目录相关”属性“效用函数。与班上其他同学的一致性可能也是一个因素。在v1.1中,几乎所有的环境成员都是返回简单的、通常是固定的字符串的属性。相比之下,几乎所有目录成员都是访问文件系统的昂贵操作。