Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between Environment.CurrentDirectory and Directory.GetCurrentDirectory?

Tags:

c#

.net

In .NET what is the difference between:

  • Environment.CurrentDirectory
  • Directory.GetCurrentDirectory()?

Of course, Environment.CurrentDirectory is a property which can be set and obtained.

Are there any other differences?

like image 916
Rohit Avatar asked Jul 22 '09 11:07

Rohit


People also ask

How do I change my CurrentDirectory environment?

open System open System.IO if Environment. OSVersion. Platform = PlatformID. Win32NT then // Change the directory to %WINDIR% Environment.


2 Answers

As David says: they do the same thing. Internally, when getting Environment.CurrentDirectory it will call Directory.GetCurrentDirectory and when setting Environment.CurrentDirectory it will call Directory.SetCurrentDirectory.

Just pick a favorite and go with it.

like image 119
Fredrik Mörk Avatar answered Sep 25 '22 15:09

Fredrik Mörk


As per other answers, there is no difference - the implemenetation of Environment.CurrentDirectory delegates to the Get and Set methods in Directory.

There's an interesting stylistic API-design question that that raises - why did the designers of Environment feel that a regular property was appropriate, whereas the designers of Directory preferred explicit Get and Set methods?

The Framework Design Guidelines book has a fair amount to say about choosing properties versus methods, some of which is available online. The most relevant parts seem to me to be (with my emphases):

A rule of thumb is that methods should represent actions and properties should represent data. Properties are preferred over methods if everything else is equal

...

  • CONSIDER using a property, if the member represents a logical attribute of the type

...

  • DO use a method, rather than a property, in the following situations:
    • The operation is orders of magnitude slower than a field access would be

All things considered my opinion is that explicit Get and Set methods better represent what is going on here.

like image 42
AakashM Avatar answered Sep 22 '22 15:09

AakashM