.net - not - path.combine c#
¿Por qué Path.Combine no agrega Path.DirectorySeparatorChar después del designador de la unidad? (2)
MSDN no parece explicar por qué, pero proporciona documentación sobre lo que está viendo:
Path.Combine (string path1, string path2)
Si path1 no es una referencia de unidad (es decir, "C:" o "D:") y no termina con un carácter separador válido como se define en DirectorySeparatorChar, AltDirectorySeparatorChar o VolumeSeparatorChar, DirectorySeparatorChar se agrega a path1 antes de la concatenación.
var actual = Path.Combine("c:", "filename");
var expected = @"c:/filename";
Assert.AreEqual(expected, actual);
Resultado
{Assert.AreEqual failed. Expected:<c:/filename>. Actual:<c:filename>.
¿Por qué?
C:filename
es una ruta válida y es diferente de C:/filename
. C:filename
es el filename
de filename
en el directorio actual en la unidad C:/filename
mientras que C:/filename
es el filename
de filename
en la raíz de esa unidad. Al parecer, querían mantener la funcionalidad de referirse al directorio actual en alguna unidad.
Este comportamiento se describe here en MSDN.