2009-01-09 17 views

Respuesta

519

El símbolo @ le permite usar la palabra reservada. Por ejemplo:

int @class = 15; 

Los trabajos anteriores, cuando el siguiente no lo haría:

int class = 15; 
+17

¿Con qué es diferente a, por ejemplo, un guión bajo? –

+66

Con un símbolo @, el nombre se registra en el ensamblaje como "clase", frente a un subrayado es "_clase". Por lo tanto, si otro lenguaje .NET no define "clase" como una palabra reservada, podrían usar el nombre simplemente "clase". –

+28

Si usó @class para un nombre de propiedad, podría acceder a él de la siguiente manera: MyClass.class en lugar de MyClass._class –

8

Se permite el uso de una palabra clave en C# como una variable. Por ejemplo:

class MyClass 
{ 
    public string name { get; set; } 
    public string @class { get; set; } 
} 
298

El símbolo @ 2 propósitos en C#:

En primer lugar, le permite utilizar una palabra clave reservada como una variable de la siguiente manera:

int @int = 15; 

La segunda opción permite especifica una cadena sin tener que escapar ningún carácter. Por ejemplo, el carácter '\' es un carácter de escape por lo general lo que se necesita para hacer esto:

var myString = "c:\\myfolder\\myfile.txt" 

alternativa, se puede hacer esto:

var myString = @"c:\myFolder\myfile.txt" 
+16

Cómo afectaba a las cadenas era exactamente lo que estaba buscando. ¡Gracias! – Scott

+3

Gracias, el uso de @ para cadenas fue exactamente lo que estaba buscando – Oliver

+2

Aún necesita evitar comillas dobles al doblarlas. –

50

Un punto importante que las otras respuestas olvidaron, es que "@keyword" se compila en "palabra clave" en CIL.

Así que si tiene un marco creado en, por ejemplo, F #, que requiere que defina una clase con una propiedad llamada "clase", puede hacerlo.

No es que es útil en la práctica, pero no tenerlo evitaría C# de algunas formas de interoperabilidad de lenguaje.

Normalmente veo que no se usa para interoperabilidad, sino para evitar las restricciones de palabras clave (generalmente en nombres de variables locales, donde este es el efecto solo), es decir.

private void Foo(){ 
    int @this = 2; 
} 

pero no lo recomendaría. Simplemente busque otro nombre, incluso si el 'mejor' nombre para la variable es uno de los nombres reservados.

+3

Probablemente sea un buen consejo. Creo que el calificador @ es el equivalente del corchete de VB.Net, por lo que el equivalente de VB sería: dim [Clase] como Int32 = 15 –

+2

@ Michael Es exactamente el equivalente de la sintaxis de corchetes cuadrados de VB.NET. http://stackoverflow.com/questions/6639688/using-keywords-as-identifiers-in-f señala que F # utiliza doble backticks alrededor de un identificador para el mismo propósito. – ClickRick

+1

Como un comentario tardío - "no es que sea TAN útil" - en MVC esa es la forma en que puede pasar una propiedad llamada "clase" al render e - que se convierte en html "clase" para definir la clase CSS. – TomTom

Cuestiones relacionadas