tipos sharp referencia que programacion por parametros operator lenguaje historia datos caracteristicas c#

sharp - ¿Qué significa el símbolo @ antes de un nombre de variable en C#?



tipos de datos en c# (4)

Posible duplicado:
¿Cuál es el uso / significado del carácter @ en los nombres de variable en C #?

Entiendo que el símbolo @ se puede usar antes de un literal de cadena para cambiar la forma en que el compilador analiza la cadena. Pero, ¿qué significa cuando un nombre de variable tiene el prefijo @?


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

int @class = 15;

Lo anterior funciona, cuando lo siguiente no sería:

int class = 15;


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

En primer lugar, le permite usar una palabra clave reservada como una variable como esta:

int @int = 15;

La segunda opción te permite especificar una cadena sin tener que escapar ningún carácter. Por ejemplo, el carácter ''/' es un carácter de escape, por lo que normalmente necesitarías hacer esto:

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

alternativamente puedes hacer esto:

var myString = @"c:/myFolder/myfile.txt"


Le permite utilizar una palabra clave de C # como variable. Por ejemplo:

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


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

Entonces, si tiene un marco que se hizo en, digamos, F #, que requiere que defina una clase con una propiedad llamada "clase", puede hacerlo.

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

Por lo general, veo que no se usa para interoperar, sino para evitar las restricciones de palabras clave (generalmente en los nombres de variables locales, donde este es el único efecto), es decir.

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

¡Pero desaconsejaría fuertemente eso! Simplemente busque otro nombre, incluso si el nombre ''mejor'' para la variable es uno de los nombres reservados.