Хочу обратиться к данному элементу через другой класс:
public static string WinDir = (Environment.GetEnvironmentVariable("windir"));
Из видео-уроков по c# я понял что это не правильно.
Как лучше использовать свойства?
Так:
public static string WinDir {get;set;} = (Environment.GetEnvironmentVariable("windir"));
Или так:
public static string WinDir {get;private set;} = (Environment.GetEnvironmentVariable("windir"));
Меня интересуют последние 2 способа:
{get;set;}
- Его же можно изменять из другого класса правильно?
А {get;private set;}
- изменять нельзя, он только получит путь?!
Ну во-первых, мало толку от создания статической обертки над статическим методом из стандартной библиотеки, почему бы не использовать сразу Environment.GetEnvironmentVariable("windir")
там где он нужен.
Во-вторых, (уж не знаю какая вероятность у этого, но) результат этого метода может меняться от вызова к вызову, поэтому не очень хорошо сохранять его и всегда использовать сохраненное значение, поэтому, опуская предыдущий абзац лучше уж написать что-то вроде:
public static string WinDir { get { return Environment.GetEnvironmentVariable("windir"); } }
или, в новых версиях языка, можно сократить до выражения:
public static string WinDir => Environment.GetEnvironmentVariable("windir");
Ну и, если не учитывать все вышеизложенное, у вас есть несколько путей:
Если функционал свойства не нужен (а в некоторых случаях от них нельзя уйти), то можно сделать readonly-поле:
public static readonly string WinDir = Environment.GetEnvironmentVariable("windir");
В новых версиях языка также появилась возможность создания свойств только для чтения без явного использования backing-field:
public static string WinDir { get; } = Environment.GetEnvironmentVariable("windir");
Что касается ваших вопросов:
{ get; set; }
- да, это свойство может быть изменено снаружи и это вам, скорее всего, не нужно.
{ get; private set; }
- это свойство может быть изменено только в коде этого класса, это уже лучше, но все равно вероятность ошибки есть.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не очень хорошо знаком с языком программирования RМожно ли сделать систему подобного плана?
Пытаюсь понять что значит «строки не «изменяемы»? И казалось бы в этой статье автор из кожи вон лез и все по полочкам расставил, но я не понялИ...
Пытаюсь написать службу которая каждую минуту будет записывать в файл фразу, предположим "Hello World" с новой строки
К проекту подключен внешний Service ReferenceСгенерированный код в Reference