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