Почему Path.Combine не добавляет Path.DirectorySeparatorChar после обозначения диска?

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

Результат

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

Зачем?

2 ответа

Решение

C:filename является допустимым путем и отличается от C:\filename, C:filename это файл filename в текущем каталоге на C: ехать в то время как C:\filename это файл filename в корне этого диска. Очевидно, они хотели сохранить функциональность ссылки на текущий каталог на каком-то диске.

Это поведение описано здесь в MSDN

MSDN не объясняет почему, но предоставляет документацию о том, что вы видите:

Path.Combine (строка path1, строка path2)

Если path1 не является ссылкой на диск (то есть "C:" или "D:") и не заканчивается допустимым символом-разделителем, как определено в DirectorySeparatorChar, AltDirectorySeparatorChar или VolumeSeparatorChar, DirectorySeparatorChar добавляется к path1 перед конкатенацией.

Другие вопросы по тегам