2009-04-12 22 views

Respuesta

21

cadenas literales

C# soporta dos formas de cadenas literales: cadenas literales regulares y cadenas literales literales.

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

A literal de cadena literal consiste en 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.

Ejemplo 1:

@"C:\Path\File.zip" == "C:\\Path\\File.zip" 

// where 

"C:\\Path\\File.zip" // regular string literal 
@"C:\Path\File.zip" // verbatim string literal 

Nota: En los literales de cadena literales que debe escapar comillas dobles.

Ejemplo 2:

@"He said: ""Hello""" == "He said: \"Hello\"" 

Más información aquí:

Identificadores

El prefijo "@" permite el uso de palabras clave como identificadores, que es útil, cuando interactúe con otros lenguajes de programación. El carácter @ no es realmente parte del identificador, por lo que el identificador podría verse en otros idiomas como un identificador normal, sin el prefijo. Un identificador con un prefijo @ se denomina identificador literal. El uso del prefijo @ para los identificadores que no son palabras clave está permitido, pero se desaconseja por cuestiones de estilo.

Ejemplo:

class @class 
{ 
    public static void @static(bool @bool) { 
     if (@bool) 
     System.Console.WriteLine("true"); 
     else 
     System.Console.WriteLine("false"); 
    } 
} 
class Class1 
{ 
    static void M() { 
     cl\u0061ss.st\u0061tic(true); 
    } 
} 
+0

No más, excepto una comilla doble. – Samuel

+0

También permite cadenas de líneas múltiples. –

+0

No ha usado @ en los identificadores, no se menciona explícitamente en la pregunta, pero yo diría que el tema lo incluye. –

2

El símbolo @ dice básicamente "aprovechar esta cadena tal y como es". Le permite al desarrollador evitar el escape.

Entonces, @ "C: \" == "C: \\" (con el \ escapado).

Lo encuentro más útil en RegEx ... RegEx puede volverse realmente desagradable y confuso rápidamente cuando comienzas a escapar cosas diferentes, etc., así que es bueno usar el valor literal.

1

el signo @ antes de una cadena permite la interpretación literal de la cadena, de lo contrario, tendría que escapar de la barra invertida con otra ("C: \").

2

Eso es verbatim string literal, por lo que puede utilizar la barra invertida sin que se interprete como carácter de escape.

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

cotización de escape-secuencia: ""

Por lo tanto, el único escape de la cadena textual literal no se escapa "" como " dentro de los dos "s

1

@ indica que la cadena es una cadena literal. y por lo tanto no tiene que escapar caracteres dentro de él. Como lo dice documentation for string:

La ventaja de las cadenas verbatim es que e scape secuencias no son procesados, lo que hace que sea fácil de escribir, por ejemplo, un nombre de archivo completo: @ "c: \ Docs \ Source \ a.txt" en lugar de "c:\\Docs\\Source\\a.txt"

7

El símbolo @ tiene un par de significados en C#:

  • cuando se usan al principio de la cadena, que significa "tomar esta cadena, literalmente, no interpretan personajes que de otro modo se usarían como personajes de escape ". Esto se llama verbatim string literal. Por ejemplo, @"\n\t" es igual a "\\n\\t".

  • Cuando se utiliza al principio de un identificador, significa "interpretar esto como un identificador, no como una palabra clave". Por ejemplo, int @this le permitiría nombrar una variable entera "this", que normalmente sería ilegal ya que this es una palabra clave.

Cuestiones relacionadas