代码之家  ›  专栏  ›  技术社区  ›  Rohit

environment.currentdirectory和directory.getcurrentdirectory有什么区别?

  •  24
  • Rohit  · 技术社区  · 15 年前

    在.NET中,有什么区别:

    • Environment.CurrentDirectory
    • Directory.GetCurrentDirectory() ?

    当然, 环境.currentdirectory 是可以设置和获取的属性。

    还有什么区别吗?

    4 回复  |  直到 15 年前
        1
  •  24
  •   Fredrik Mörk    15 年前

    正如大卫所说:他们做同样的事情。内部,当 Environment.CurrentDirectory 它会呼叫 Directory.GetCurrentDirectory 设置时 环境.currentdirectory 它会呼叫 Directory.SetCurrentDirectory .

    你只要挑一个最喜欢的就行了。

        2
  •  24
  •   codybartfast    7 年前

    根据其他的答案,没有区别-实施 Environment.CurrentDirectory 代表 Get Set 方法在 Directory .

    有一个有趣的风格API设计问题,提出了-为什么设计师 Environment 认为一个常规的财产是适当的,而设计师的 号码簿 首选显式 得到 集合 方法?

    《框架设计指南》一书对选择属性和方法有相当多的论述,其中一些是 available online . 在我看来,最相关的部分是:

    经验法则是,方法应该 表示动作和属性 应该表示数据。 属性是 首选方法 如果一切 其他是平等的

    • 如果成员表示逻辑属性,请考虑使用属性 类型的

    • 在以下情况下,请务必使用方法而不是属性:
      • 该操作比现场访问慢几个数量级。 将是

    我认为所有的事情都很明确 得到 集合 方法 最好能代表这里的情况。

        3
  •  2
  •   David M    15 年前

    不,没有其他区别。

        4
  •  0
  •   Chris Webb    10 年前

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

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

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

    即使是getcurrentdirectory也有两个潜在的异常。在网络和/或具有大量子目录的情况下,在最坏的情况下,这些可能需要几秒钟而不是几毫秒。