Подтвердить что ты не робот

В чем разница между Environment.CurrentDirectory и Directory.GetCurrentDirectory?

В .NET какая разница между:

  • Environment.CurrentDirectory
  • Directory.GetCurrentDirectory()?

Конечно, Environment.CurrentDirectory - это свойство, которое можно установить и получить.

Есть ли другие отличия?

4b9b3361

Ответ 1

Как говорит Дэвид: они делают то же самое. Внутри, при получении Environment.CurrentDirectory он вызывается Directory.GetCurrentDirectory, а при установке Environment.CurrentDirectory он вызывается Directory.SetCurrentDirectory.

Просто выберите фаворита и идите с ним.

Ответ 2

В соответствии с другими ответами нет никакой разницы - реализация Environment.CurrentDirectory делегирует методы Get и Set в Directory.

Есть интересный стильный вопрос API-дизайна, который поднимает - почему дизайнеры Environment считают подходящим регулярное свойство, тогда как разработчики Directory предпочитают явные методы Get и Set?

В книге "Руководства по дизайну каркаса" можно рассказать о выборе свойств и методов, некоторые из которых доступны в Интернете. Мне кажется, что наиболее значимые части меня (с моими акцентами):

Эмпирическое правило состоит в том, что методы должны представляют действия и свойства должны представлять данные. Свойства: предпочитают более методы , если все else равно

...

  • CONSIDER с использованием свойства, если элемент представляет собой логический атрибут типа

...

  • Используйте метод, а не свойство, в следующих ситуациях:
    • Операция на несколько порядков медленнее, чем доступ к полю будет

Считаю все, что я считаю, что явные методы Get и Set лучше отражают то, что здесь происходит.

Ответ 3

Нет, других различий нет.

Ответ 4

Directory.SetCurrentDirectory генерирует не менее 7 исключений, поэтому проверка всех вещей, которые могут пойти не так, может занять много времени. Поэтому метод, по-видимому, соответствует

"НЕ используйте метод, а не свойство, в следующих ситуациях:

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

Даже GetCurrentDirectory имеет 2 потенциальных исключения. По всей сети и/или с большим количеством подкаталогов для навигации по ним потенциально может потребоваться секунды вместо миллисекунд в худшем случае.