给定代码:
然而,结果是:
如果我初始化
如果path2不包括根目录(例如,如果path2不以分隔符字符或驱动器规范开头),则结果是两个路径的连接,并插入一个分隔符字符。如果path2包括根目录,则返回path2。
在我的看法中,在.NET中将
为什么这个方法被设计成将单个
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。
在我的看法中,在.NET中将
\
排除为根目录更有意义。据我所知,在任何Windows操作系统上都不是有效的根目录(可以是\\
)。然后,我可以组合部分路径,而不必担心部分路径是否以\
开头。为什么这个方法被设计成将单个
\
视为根目录?