在 C# 中使用 / 或 \ 作为文件夹路径

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

在 C# 中编写文件路径时,我发现我可以编写类似“C:\”或“C:/”的内容并获得相同的路径。推荐哪一款?我听说在某处使用单个 / 比使用 \ 更推荐(使用 \ 作为转义序列)。

c# windows string path escaping
6个回答
41
投票

Windows 支持这两种路径分隔符,因此两者都可以工作,至少对于本地路径而言(/ 不适用于网络路径)。问题是,在 Windows 上使用有效但非标准的路径分隔符 (/) 并没有实际的好处,特别是因为您可以使用逐字字符串文字:

string path = @"C:\"  //Look ma, no escape

我能看到使用 / 分隔符的好处的唯一情况是当您仅使用相对路径并在 Windows 和 Linux 中使用代码时。然后你可以让“../foo/bar/baz”指向同一目录。但即使在这种情况下,最好还是保留 System.IO 命名空间(Path.DirectorySeparatorCharPath.Combine)来解决此类问题。


23
投票

请使用 Path.DirectorySeparatorChar 或更好,因为 Poita 建议使用 Path.Combine


12
投票

我在 C# 中这样写路径:

var path = @"C:\My\Path"

@
角色关闭
\
转义。

十年后编辑

.NET 现在在 Linux 上运行。在可行的情况下使用

Path.Combine()
,否则使用
Path.DirectorySeparatorChar
根据底层操作系统的情况使用
\
/
构建路径。


9
投票

使用

Path.Combine
,你就不需要担心这样的语义。


2
投票

这不是 C# 问题 - 这是 Windows 问题。 Windows 中的路径通常用反斜杠显示:C:。在我看来,这就是您应该在 C# 中使用的内容。使用 @"C:\" 来防止对反斜杠字符进行特殊处理。


0
投票

.Net Framework 4.8(VS 2022)

如果我使用这个:

string myPath = @"C:\myFile.txt";

它抛出异常“访问路径'C:\myFile.txt'被拒绝。'”

但是当我在 C:\ 中创建文件夹时,它就可以工作了。

 string myPath = @"C:\mie\myFile.txt";
© www.soinside.com 2019 - 2024. All rights reserved.