var actual = Path.Combine("c:", "filename");
var expected = @"c:\filename";
Assert.AreEqual(expected, actual);
结果
{Assert.AreEqual failed. Expected:<c:\filename>. Actual:<c:filename>.
为什么?
var actual = Path.Combine("c:", "filename");
var expected = @"c:\filename";
Assert.AreEqual(expected, actual);
结果
{Assert.AreEqual failed. Expected:<c:\filename>. Actual:<c:filename>.
为什么?
C:filename
是有效路径,不同于C:\filename
. C:filename
是驱动器filename
上当前目录中的文件,C:
而C:\filename
是该filename
驱动器根目录中的文件。显然,他们希望保留在某个驱动器上引用当前目录的功能。
此行为在 MSDN中进行了描述
MSDN似乎没有解释原因,但确实提供了有关您所看到内容的文档:
Path.Combine(字符串路径 1,字符串路径 2)
如果 path1 不是驱动器引用(即“C:”或“D:”)并且不以 DirectorySeparatorChar、AltDirectorySeparatorChar 或 VolumeSeparatorChar 中定义的有效分隔符结尾,则 DirectorySeparatorChar 在连接之前附加到 path1。