コードを考えると:
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 が区切り文字またはドライブ指定で始まらない場合)、結果は 2 つのパスが連結され、その間に区切り文字が挿入されます。path2 にルートが含まれる場合、path2 が返されます。
\
IMO、.NETではルートとして除外する方がはるかに理にかなっています。私の知る限り、これはどのWindows OSでも有効なルートではありません(\\
可能性があります)。これで、部分パスが\
.
このメソッドが単一\
のルートを考慮するように設計されているのはなぜですか?