Почему 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>.
Почему?
Ответы
Ответ 1
C:filename
является допустимым путем и отличается от C:\filename
. C:filename
- это файл filename
в текущем каталоге диска C:
, тогда как C:\filename
- это файл filename
в корневом каталоге этого диска. По-видимому, они хотели сохранить функциональность ссылки на текущий каталог на каком-то диске.
Это поведение описано здесь в MSDN
Ответ 2
MSDN, похоже, не объясняет, почему, но предоставляет документацию о том, что вы видите:
Path.Combine(строка path1, строка path2)
Если путь1 не является ссылкой на диск (то есть "C:" или "D:" ) и не заканчивается действительным символом разделителя, как это определено в DirectorySeparatorChar, AltDirectorySeparatorChar или VolumeSeparatorChar, то DirectorySeparatorChar добавляется к пути 1 перед конкатенацией.