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

结果

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

为什么?

4

2 回答 2

27

C:filename是有效路径,不同于C:\filename. C:filename是驱动器filename上当前目录中的文件,C:C:\filename是该filename驱动器根目录中的文件。显然,他们希望保留在某个驱动器上引用当前目录的功能。

行为在 MSDN中进行了描述

于 2009-10-06T20:36:51.210 回答
5

MSDN似乎没有解释原因,但确实提供了有关您所看到内容的文档:

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

如果 path1 不是驱动器引用(即“C:”或“D:”)并且不以 DirectorySeparatorChar、AltDirectorySeparatorChar 或 VolumeSeparatorChar 中定义的有效分隔符结尾,则 DirectorySeparatorChar 在连接之前附加到 path1。

于 2009-10-06T20:31:44.490 回答