Descubrí que puede comenzar su nombre de variable con un carácter '@' en C #. En mi proyecto C # estaba usando un servicio web (agregué una referencia web a mi proyecto) que estaba escrito en Java. Uno de los objetos de interfaz definidos en el WSDL tenía una variable miembro con el nombre "params". Obviamente, esta es una palabra reservada en C #, por lo que no puede tener una clase con una variable miembro con el nombre "params". El objeto proxy que se generó contenía una propiedad que se parecía a esto:
public ArrayList @params {
get { return this.paramsField; }
set { this.paramsField = value; }
}
Busqué en la documentación de VS 2008 c # pero no pude encontrar nada al respecto. Además, buscar en Google no me dio ninguna respuesta útil. Entonces, ¿cuál es el significado exacto o el uso del carácter '@' en un nombre de variable / propiedad?
fuente
@
?@
símbolo de esta manera, la especificación del lenguaje C # sí. Ha sido compatible con esto desde su primera versión, C # 1.0 (lanzado con .NET 1.0). csharpindepth.com/articles/chapter1/Specifications.aspx[ ]
para especificar un identificador literal, por ejemploDim [String] As String
.Simplemente le permite usar una palabra reservada como nombre de variable. No se recomienda en mi humilde opinión (excepto en casos como usted).
fuente
yield
palabra clave no es una palabra reservada, y solo se puede usar en contextos donde legalmente no puede aparecer ningún identificador . Un objetivo al diseñar nuevas características para C # es construirlas de tal manera que cualquier programa que sea legal antes de que se agregue una nueva característica será legal después y tendrá el mismo significado .@Html.TextboxFor( , , , new { @class="my-css-class" } )
es un buen ejemplo en el que realmente no puede evitarlo sin tener que escribir manualmente el HTML, o hacer que JavaScript cambie los atributos en una etapa posterior.En C #, el carácter at (@) se usa para denotar literales que explícitamente no se adhieren a las reglas relevantes en la especificación del lenguaje.
Específicamente, se puede usar para nombres de variables que entren en conflicto con palabras clave reservadas (por ejemplo, no puede usar params pero puede usar @ params en su lugar, lo mismo con out / ref / cualquier otra palabra clave en la especificación del lenguaje). Además, se puede usar para literales de cadena sin escape; Esto es particularmente relevante con las constantes de ruta, por ejemplo, en lugar de
path = "c:\\temp\\somefile.txt"
que pueda escribirpath = @"c:\temp\somefile.txt"
. También es realmente útil para expresiones regulares.fuente
A diferencia de los sigilos de Perl, un
@
prefijo antes de un nombre de variable en C # no tiene significado. Six
es una variable,@x
es otro nombre para la misma variable.Pero el
@
prefijo tiene un uso , como descubrió: puede usarlo para aclarar nombres de variables que C # rechazaría como ilegales.fuente
El
@
símbolo le permite usar palabras clave reservadas para el nombre de la variable. como@int
,@string
,@double
etc.Por ejemplo:
El código anterior funciona bien, pero a continuación no funcionará:
fuente
Simplemente le permite usar palabras reservadas como nombres de variables. Quería una var llamada
event
el otro día. Iba a ir con él_event
, pero mi colega me recordó que podía llamarlo@event
.fuente
Otro caso de uso son los métodos de extensión. El primer parámetro especial se puede distinguir para denotar su significado real con el
@this
nombre. Un ejemplo:fuente
Si usamos una palabra clave como nombre para un identificador, obtenemos un error del compilador "identificador esperado, 'Nombre del identificador' es una palabra clave". Para superar este error, prefije el identificador con "@". Dichos identificadores son identificadores textuales. El carácter @ no es realmente parte del identificador, por lo que el identificador puede verse en otros idiomas como un identificador normal, sin el prefijo
fuente
Puede usarlo para usar las palabras clave reservadas como nombre de variable como
el compilador ignorará
@
y compilará la variable comoint
no es una práctica común usar el pensamiento
fuente