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

在c#代码中使用斜杠作为路径可以吗,c#,windows,path,backslash,C#,Windows,Path,Backslash,我已经使用Linux很多年了,由于这个习惯,我在c代码的路径中添加了/(斜杠)而不是\(反斜杠) 代码是有效的,但我想知道在Windows上编译和运行时,c#是否会将斜杠转换为反斜杠。是否有一些官方文件说明了这一点 在某些情况下,使用/在路径中可能导致某些意外行为 更新: 我知道最终的解决方案是使用这个,但我想知道为什么斜杠仍然是“ok”: Path.Combine("x86", "ShaferFilechck.dll"); // x86\ShaferFilechck.dll 根据我的经验,W

我已经使用Linux很多年了,由于这个习惯,我在c代码的路径中添加了/(斜杠)而不是\(反斜杠)

代码是有效的,但我想知道在Windows上编译和运行时,c#是否会将斜杠转换为反斜杠。是否有一些官方文件说明了这一点

在某些情况下,使用/在路径中可能导致某些意外行为

更新:

我知道最终的解决方案是使用这个,但我想知道为什么斜杠仍然是“ok”:

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

根据我的经验,Windows可以容忍使用前斜杠和后斜杠作为路径分隔符。甚至把它们混合在一起也行。C#和.NET不处理文件名中的任何正向斜杠。文件系统层的窗口接受它们作为反斜杠的替代字符。在Linux和其他操作系统上运行C#代码的情况就不同了

为了平台一致性,不建议采用路径分隔符。您的程序应使用路径.directorysepartorchar来确定在不同平台上部署应用程序时要使用的适当字符


有关更多信息,请参阅。

根据我的经验,Windows可以容忍使用前斜杠和后斜杠作为路径分隔符。甚至把它们混合在一起也行。C#和.NET不处理文件名中的任何正向斜杠。文件系统层的窗口接受它们作为反斜杠的替代字符。在Linux和其他操作系统上运行C#代码的情况就不同了

为了平台一致性,不建议采用路径分隔符。您的程序应使用路径.directorysepartorchar来确定在不同平台上部署应用程序时要使用的适当字符


有关更多信息,请参阅。

您可能可以使用
Path.GetFullPath()
如下所示的
System.IO
名称空间

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

您可能可以使用
Path.GetFullPath()
如下所示的
System.IO
名称空间

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

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

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

检查答案,建议使用
Path.directorysepartorchar
以获得更好的可移植性。检查答案,建议使用
Path.directorysepartorchar
以获得更好的可移植性。Hm不知道它使用正确的反斜杠构建了完整的绝对路径。谢谢,这并没有回答我的问题,但新事物已经被发现,并且部分回答了我的问题。Hm不知道它用正确的反斜杠构造了完整的绝对路径。谢谢,这并没有回答我的问题,但新的东西已经被发现,部分回答了我的问题。