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 に追加されます。