2010-01-01 74 views
15

Al escribir rutas de archivos en C#, encontré que puedo escribir algo como "C: \" o "C: /" y obtener la misma ruta. ¿Cuál se recomienda? Escuché en alguna parte que usar una/era más recomendable que usar \ (con \ como una secuencia de escape).Usando/o \ para rutas de carpeta en C#

+0

Gracias a John Saunders por señalar que este es un problema de Windows. Escuché que usar/es mejor para la compatibilidad cruzada, que no importa demasiado aquí ya que estoy apuntando a Windows. – DMan

+0

Error en el título: debe ser "/ o \\", no "// o \". – sblom

+0

@ sblom- No estoy seguro de la diferencia exacta, pero corregido porque funciona: p – DMan

Respuesta

24

Windows admite ambos separadores de ruta, por lo que ambos funcionarán, al menos para las rutas locales (/ no funcionarán para las rutas de red). Lo que pasa es que no hay ningún beneficio real de utilizar el trabajo pero separador de ruta no estándar (/) en Windows, sobre todo porque se puede utilizar la cadena textual literal:

string path = @"C:\" //Look ma, no escape 

El único caso en el que podía ver un beneficio de utilizar el/separador es cuando solo trabajará con rutas relativas y usará el código en Windows y Linux. Luego puede hacer que "../foo/bar/baz" apunte al mismo directorio. Pero incluso en este caso, es mejor dejar el espacio de nombres System.IO (Path.DirectorySeparatorChar, Path.Combine) para ocuparse de estos problemas.

+4

Lo que está llamando "operador de cadena sin formato" es realmente "literal literal literal". –

+0

¡Gracias por la respuesta! – DMan

+0

@Jay: "Verbatim string literal operator"? o simplemente "literal de la secuencia de Verbatim"? –

4

escribo caminos en C# como esto:

@ "C: \ My \ Path"

El carácter @ se apaga \ escapar.

1

Esto no es un problema de C#: es un problema de Windows. Las rutas en Windows normalmente se muestran con una barra diagonal inversa: C :. En mi opinión, eso es lo que deberías usar en C#. Use @ "C: \" para evitar un manejo especial de los caracteres de bailoteo.

8

Use Path.Combine y no necesita preocuparse por tal semántica.

+0

Es una pena que Path.Combine solo tome 2 parámetros. –

+1

@MikeCole desde .NET 4.0, una sobrecarga toma cualquier cantidad de parámetros mediante la palabra clave 'params'. – nawfal

21

Utilice Path.DirectorySeparatorChar O mejor, ya que Poita sugirió usar Path.Combine.

+1

'Path.PathSeparator' es un caracter para dividir rutas en la variable de entorno PATH. En Windows es ';'. Actualicé esta respuesta para referirme a 'DirectorySeparatorChar'. –

+0

Vaya. Gracias por la corrección, quise publicar sobre DirectorySeparatorChar. – SolutionYogi

+0

Esta es la solución correcta. –

Cuestiones relacionadas