2010-09-30 31 views
7

Hay un tipo de cadena en la que se deshabilita el procesamiento de los caracteres de escape de un literal y se imprime la cadena como está. ¿Qué es esta cuerda? el símbolo utilizado para prefijar la cadena, y un posible uso para?caracteres de escape

es it \?

Respuesta

15

Es el carácter @: @"c:\path"

Se llama un verbatim string literal.

+0

gracias chicos. Le di puntos a todos, pero tengo que elegir la mejor respuesta y es la primera respuesta. Gracias, de nuevo, por toda su ayuda. – Yves

+0

En ese caso, @Kombucha, asegúrese de marcar esto como la respuesta aceptada. :) –

+0

Lo hice :) Necesitaba esperar 8 minutos antes de poder incluso 'marcar' la marca de verificación. Acabo de hacerlo :) – Yves

5

@

string sLiteral = @"This will be formatted. Even including 
return characters, 
    and spaces at the start of lines"; 
8

Se llama verbatim string literal, y utiliza el prefijo @

sin el prefijo, sigue siendo una cadena literal.. - es una cadena normal literal.

(Algunas personas piensan erróneamente que el término "cadena literal" sólo se aplica a pie de la letra los literales de cadena, pero es más general que eso)

literales de cadena Verbatim son útiles para:.

  • líneas múltiples
  • cadenas que naturalmente contienen barras invertidas (tales como rutas de Windows y expresiones regulares)

Tenga en cuenta que este solamente hace la diferencia en tiempo de compilación. En otras palabras, estas dos afirmaciones son precisamente equivalentes :

string x = "foo\\bar"; // Regular string literal 
string x = @"foo\bar"; // Verbatim string literal 

literales de cadena Verbatim todavía están internados en la misma forma que los literales de cadena regulares, todavía se refieren a casos de System.String etc.

Desde la sección 2.4 .4.5 de la C# 4.0 specification:

una cadena normal literal consta de cero o más caracteres encerrados entre comillas dobles, como en "Hola", y puede incluir tanto secuencias de escape simples (tales como \ t para el carácter de tabulación) y secuencias de escape hexadecimales y Unicode.

Una literal literaria literal consta de un carácter @ seguido de un carácter de comillas dobles, cero o más caracteres y un carácter de comillas dobles de cierre. Un ejemplo simple es @ "hola". En un literal de cadena verbatim, los caracteres entre los delimitadores se interpretan textualmente, siendo la única excepción una secuencia de escape de cita. En particular, las secuencias de escape simples y las secuencias de escape hexadecimales y Unicode no se procesan en literales literales literales. Una literal litera literal puede abarcar varias líneas.

Tenga en cuenta que @ también puede ser utilizado como un prefijo para que pueda utilizar palabras clave como identificadores:

int class = 10; // Invalid 
int @class = 10; // Valid 

Esto no suele ser útil, pero a veces puede ser necesario si tiene utilizar una identificador particular (La palabra clave class puede ser útil para una propiedad de tipo anónimo en ASP.NET MVC, por ejemplo.)

2

si tuviera una cadena como por ejemplo: c: \ monkey.txt

que tendría que escapar de la reducir de esta manera:
string s = "c:\\monkey.txt"

notificación de la doble barra

también, puede utilizar el símbolo '@' para indicar que la cadena debe ser tomada literalmente:
string s = @"c:\monkey.txt"

Cuestiones relacionadas