В .NET какая разница между:
-
Environment.CurrentDirectory -
Directory.GetCurrentDirectory()?
Конечно, Environment.CurrentDirectory - это свойство, которое можно установить и получить.
Есть ли другие отличия?
В .NET какая разница между:
Environment.CurrentDirectoryDirectory.GetCurrentDirectory()?Конечно, Environment.CurrentDirectory - это свойство, которое можно установить и получить.
Есть ли другие отличия?
Как говорит Дэвид: они делают то же самое. Внутри, при получении Environment.CurrentDirectory он вызывается Directory.GetCurrentDirectory, а при установке Environment.CurrentDirectory он вызывается Directory.SetCurrentDirectory.
Просто выберите фаворита и идите с ним.
В соответствии с другими ответами нет никакой разницы - реализация Environment.CurrentDirectory делегирует методы Get и Set в Directory.
Есть интересный стильный вопрос API-дизайна, который поднимает - почему дизайнеры Environment считают подходящим регулярное свойство, тогда как разработчики Directory предпочитают явные методы Get и Set?
В книге "Руководства по дизайну каркаса" можно рассказать о выборе свойств и методов, некоторые из которых доступны в Интернете. Мне кажется, что наиболее значимые части меня (с моими акцентами):
Эмпирическое правило состоит в том, что методы должны представляют действия и свойства должны представлять данные. Свойства: предпочитают более методы , если все else равно
...
- CONSIDER с использованием свойства, если элемент представляет собой логический атрибут типа
...
- Используйте метод, а не свойство, в следующих ситуациях:
- Операция на несколько порядков медленнее, чем доступ к полю будет
Считаю все, что я считаю, что явные методы Get и Set лучше отражают то, что здесь происходит.
Нет, других различий нет.
Directory.SetCurrentDirectory генерирует не менее 7 исключений, поэтому проверка всех вещей, которые могут пойти не так, может занять много времени. Поэтому метод, по-видимому, соответствует
"НЕ используйте метод, а не свойство, в следующих ситуациях:
The operation is orders of magnitude slower than a field access would be"
Даже GetCurrentDirectory имеет 2 потенциальных исключения. По всей сети и/или с большим количеством подкаталогов для навигации по ним потенциально может потребоваться секунды вместо миллисекунд в худшем случае.