Согласно этому, подпись Environment.SystemDirectory:
public static string SystemDirectory { get; }
Очевидно, что это вернет строку, но мой вопрос: учитывая разнообразие ОС, на которых сейчас работает .Net Core, есть ли случаи, в которых возвращаемое значение может быть пустой строкой? Или будет гарантировано (насколько это возможно) возвращаемое значение строкой ненулевой длины?
Причина, по которой я спрашиваю, заключается в том, что я вижу такой код:
string path = Environment.SystemDirectory;
if (!string.IsNullOrEmpty(path))
{
...
}
@ JL0PD Я собирался указать на этот код, но, ИМХО, все, что это делает, это опускает мой вопрос на уровень «GetFolderPathCore()». Но я также понятия не имею о поведении под Linux. В худшем случае каталог самого верхнего уровня в Linux будет «/». (Наконец, я с подозрением отношусь к этому имени файла «Environment.UnixOrBrowser.cs»).
Пустая строка по умолчанию в Linux, как для пользователей с полномочиями root, так и для пользователей без полномочий root (Manjaro Linux).
Я считаю, что SystemDirectory не является соответствующим термином для Linux. Пустая строка — это просто резервное значение.
Environment.SystemDirectory
всегда должен вести себя так же, как Environment.GetFolderPath(Environment.SpecialFolder.System, Environment.SpecialFolderOption.None)
В Windows:
Эквиваленты GetSystemDirectoryW, который никогда не бывает пустым.
На macOS:
Всегда возвращается "/System"
На всех остальных платформах:
Всегда возвращается string.Empty
Быстрый взгляд на код показывает, что он возвращает непустую строку для Windows и OSX. Например, в Linux нет централизованного каталога ОС, поскольку все разбросано в корне файловой системы.