19
var actual = Path.Combine("c:", "filename");
var expected = @"c:\filename";
Assert.AreEqual(expected, actual);

結果

{Assert.AreEqual failed. Expected:<c:\filename>. Actual:<c:filename>.

なんで?

4

2 に答える 2

27

C:filenameは有効なパスであり、とは異なりC:\filenameます。C:filenameはドライブfilenameの現在のディレクトリにあるファイルですが、はそのドライブのルートにあるファイルです。どうやら彼らは、いくつかのドライブ上の現在のディレクトリを参照する機能を維持したかったようです。C:C:\filenamefilename

この動作は、MSDNで説明されています

于 2009-10-06T20:36:51.210 に答える
5

MSDNは理由を説明していないようですが、あなたが見ているものに関するドキュメントを提供しています:

Path.Combine(文字列パス1, 文字列パス2)

path1 がドライブ参照 (つまり、「C:」または「D:」) ではなく、DirectorySeparatorChar、AltDirectorySeparatorChar、または VolumeSeparatorChar で定義されている有効な区切り文字で終わっていない場合、連結の前に DirectorySeparatorChar が path1 に追加されます。

于 2009-10-06T20:31:44.490 に答える