为什么Path.Combine不将驱动器盘符后添加Path.DirectorySeparatorCh

2019-08-17 09:40发布

var actual = Path.Combine("c:", "filename");
var expected = @"c:\filename";
Assert.AreEqual(expected, actual);

结果

{Assert.AreEqual failed. Expected:<c:\filename>. Actual:<c:filename>.

为什么?

Answer 1:

C:filename是一个有效的路径和不同于C:\filenameC:filename是文件filename中的当前目录C:驱动器,而C:\filename是文件filename在该驱动器的根。 显然,他们想保留指的一些驱动器的当前目录的功能。

这种行为被描述这里在MSDN



Answer 2:

MSDN似乎并没有解释为什么,但确实对你所看到的提供文件:

Path.Combine(字符串路径1,串路径2)

如果PATH1不是驱动基准(即,“C:”或“d”),并且不具有如DirectorySeparatorChar,AltDirectorySeparatorChar,或VolumeSeparatorChar定义的有效分隔字符结尾,DirectorySeparatorChar被级联之前附加到路径1。



文章来源: Why Path.Combine doesn't add the Path.DirectorySeparatorChar after the drive designator?