为什么这个Path.Combine不起作用?

Exi*_*tos 12 c# io

我有以下命令:

string reportedContentFolderPath =
Path.Combine(contentFolder.FullName.ToString(), @"\ReportedContent\");
Run Code Online (Sandbox Code Playgroud)

当我查看调试器时,我可以看到以下内容:

contentFolder.FullName = "E:\\"
Run Code Online (Sandbox Code Playgroud)

然而

reportedContentFolderPath = "\\ReportedContent\\"
Run Code Online (Sandbox Code Playgroud)

为什么Path.Combine砍掉E:\?

Jon*_*eet 31

你有一个领先的斜线@"\ReportedContent\".你不想要那个(或我怀疑的尾随) - 试试吧:

string reportedContentFolderPath =
    Path.Combine(contentFolder.FullName.ToString(), "ReportedContent");
Run Code Online (Sandbox Code Playgroud)

文档:

如果path2不包含根(例如,如果path2不以分隔符或驱动器规范开头),则结果是两个路径的串联,以及插入的分隔符.如果path2包含root,path2则返回.

在你的情况下,path2 确实包含一个根,所以它返回时没有看到path1.


InB*_*een 7

它在方法文档中解释:

如果path2不包含根(例如,如果path2不以分隔符或驱动器规范开头),则结果是两个路径的串联,以及插入的分隔符.如果path2包含根,则返回path2.

我建议你仔细阅读以了解所有可能的组合是如何工作的:Path.Combine方法


Mar*_*ade 6

如果Path.Combine以分隔符(\n)开头,它将返回第二个参数\.