Почему 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 перед конкатенацией.