visual tipos studio programa operadores metodos logicos entre ejemplos diferencia datos codigo clases c#

tipos - ¿Qué significa colocar un @ delante de un nombre de variable C#?



tipos de datos en c# (6)

Esta pregunta ya tiene una respuesta aquí:

He estado trabajando con algunos códigos heredados de C # y he visto muchos símbolos @ delante de nombres de variables. ¿Qué significa esto o qué significa?

Actualmente lo estoy viendo mucho frente a variables con nombres comunes que no están reservados. P.ej:

MyProcedure(@step.LoadInstanceId, @step.ResultCode, @step.StatusCode);

Dado que ese paso no es una palabra reservada, ¿hay alguna razón por la cual se debe escapar?


El signo @ se usa con identificadores que son los mismos que las palabras clave del idioma. Hay dos usos principales para esto: interoperar con código que no sea C #. En idiomas como VB o IronPython, las palabras clave no son las mismas que en C # y es posible que hayan declarado clases y propiedades con nombres que coincidan con las palabras clave de C #. Si esta característica no estaba presente, este código no sería accesible en C #. - código generado por la máquina. Si un generador de código genera código basado en alguna fuente externa (por ejemplo, WSDL), el generador puede simplemente prefijar todos los identificadores con @ y no verificar y convertir identificadores que coincidan con las palabras clave de C #.

¿Estás seguro de que tu caso no es el segundo?


Es solo una manera de permitir declarar palabras clave reservadas como vars.

void Foo(int @string)


Esto escapa de palabras reservadas en C #.


La pregunta original pregunta por qué uno escaparía de una palabra no reservada. Lo que me viene a la mente es que si step se convirtiera en una palabra reservada en el futuro, el ejemplo del código aún se compilaría. Supongo que también es una opción válida para generadores de código.


Le permite usar una palabra reservada, como ''public'', por ejemplo, como nombre de variable.

string @public = "foo";

No recomendaría esto, ya que puede conducir a una confusión innecesaria.


Poner @ delante de una cadena le dice al computador que no procese las secuencias de escape encontradas dentro de la cadena.

De la documentación :

La ventaja de @ -quoting es que las secuencias de escape no se procesan, lo que hace que sea más fácil escribir, por ejemplo, un nombre de archivo completo:

@"c:/Docs/Source/a.txt" // rather than "c://Docs//Source//a.txt"

Para incluir una comilla doble en una cadena @-cotizada, duplíquela:

@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.

Otro uso del símbolo @ es usar identificadores de referencia (/ referencia) que resultan ser palabras clave de C #. Para obtener más información, consulte 2.4.2 Identificadores .