给定代码:
string p = @"C:\Users\Brian";
string p2 = @"\bin\Debug";
string result = Path.Combine(p, p2);//result: \bin\Debug
Console.WriteLine(result);
我希望看到以下结果:
C:\Users\Brian\bin\Debug
然而结果是
\bin\Debug
如果我初始化p2 = @"bin\Debug";
然后结果如预期。查看 MSDN,这似乎按设计工作:
如果 path2 不包含根(例如,如果 path2 不以分隔符或驱动器规范开头),则结果是两个路径的串联,中间有分隔符。如果 path2 包含根,则返回 path2。
\
IMO,在.NET中排除作为根更有意义。AFAIK,这在任何 Windows 操作系统上都不是有效的根目录(\\
可以)。然后我可以组合部分路径,而不用担心部分路径是否以\
.
为什么这种方法设计为考虑单个\
根?