Можно ли использовать косую черту для пути в коде C # - PullRequest
0 голосов
/ 28 февраля 2019

Я использую Linux в течение многих лет и по привычке я добавил / (косая черта) вместо \ (обратная косая черта) для пути к моему c # коду.

private const string X86DllPath = "x86/ShaferFilechck.dll"; // should use x86\\ShaferFilechck.dll
private const string X64DllPath = "x64/ShaferFilechck.dll";

[DllImport(X64DllPath, EntryPoint = "NalpLibOpen", CallingConvention = CallingConvention.Cdecl)]
private static extern int NalpLibOpen_64(byte[] xmlParms);

Код работает, но мне интересно, если c # переводит косую черту в обратную косую черту при компиляции и запуске в Windows.Есть ли официальная документация, подтверждающая это или что-то в этом роде.

Может ли использование / in path привести к неожиданному поведению при некоторых обстоятельствах.

Обновление:

Я знаю, что окончательным решением было бы использовать это, но мне интересно, почему слэш все еще в порядке:

Path.Combine("x86", "ShaferFilechck.dll"); // x86\ShaferFilechck.dll

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Возможно, вы можете использовать Path.GetFullPath(), как показано ниже под System.IO пространством имен

private readonly string X86DllPath = Path.GetFullPath("x86/ShaferFilechck.dll");
0 голосов
/ 28 февраля 2019

Не должно быть проблем с использованием одиночных косых черт для выражения сетевого пути, и я никогда не видел, чтобы они преобразовывались в обратные косые черты.
Поскольку вы новичок в C #, использование одиночных символов обратной косой черты может вызвать проблемы.потому что они могут быть обработаны как escape-символы, такие как \ n, который является символом новой строки.Если вы не намерены использовать обратную косую черту в качестве escape, у вас есть два варианта, чтобы заставить систему использовать их как таковые: 1) использовать двойную косую черту для разделения узлов сетевого пути 2) использовать @ перед строкой, которая содержит обратную косую черту,Это более чистый путь.

0 голосов
/ 28 февраля 2019

По моему опыту, Windows допускает использование прямой и обратной косой черты в качестве разделителей пути.Даже смешивание их работает.C # и .NET не обрабатывают никаких слэшей в именах файлов.Windows на уровне файловой системы принимает их в качестве альтернативного символа обратной косой черты.То же самое нельзя сказать о выполнении кода C # в Linux и других ОС.

Для согласованности платформы не рекомендуется использовать разделитель пути.Ваши программы должны использовать Path.DirectorySeparatorChar , чтобы определить, какой символ следует использовать при развертывании приложений на разных платформах.

См. Как создавать файлы в Windows со встроенными слешами, используяPython? для дополнительной информации.

...