是否可以在c#代码中使用斜杠作为路径

问题描述 投票:0回答:3

我已经使用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);

代码有效,但我想知道在编译和运行Windows时c#是否将斜杠转换为反斜杠。是否有一些官方文件说明这或其他什么。

在某些情况下,使用/ in path会导致某些意外行为。

更新:

我知道最终的解决方案是使用它,但我想知道为什么斜线仍然“正常”:

Path.Combine("x86", "ShaferFilechck.dll"); // x86\ShaferFilechck.dll
c# windows path backslash
3个回答
1
投票

您可以在Path.GetFullPath()命名空间下使用System.IO,如下所示

private readonly string X86DllPath = Path.GetFullPath("x86/ShaferFilechck.dll");

0
投票

根据我的经验,Windows可以容忍使用正斜杠和反斜杠作为路径分隔符。即使混合它们也有效。 C#和.NET不对文件名中的任何正斜杠进行任何处理。文件系统层的Windows将它们作为反斜杠的替代字符接受。在Linux和其他操作系统上运行C#代码也是如此。

对于平台一致性,不建议假设路径分隔符。您的程序应使用Path.DirectorySeparatorChar来确定在不同平台上部署应用程序时要使用的正确字符。

有关更多信息,请参阅How can I create files on Windows with embedded slashes, using Python?


0
投票

使用单个正斜杠表示网络路径应该没有问题,我从未见过它们转换为反斜杠。 由于您是C#的新手,因此使用单个反斜杠字符可能会导致问题,因为它们可能会被视为转义字符,例如“\ n”,这是一个换行符。如果您不打算使用反斜杠作为转义,则有两种选择强制系统使用它们:1)使用双斜杠分隔网络路径节点2)在包含反斜杠的字符串之前使用@ 。这是更清洁的方式。

© www.soinside.com 2019 - 2024. All rights reserved.