working not getfilename combine .net path path-combine

.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.