tipos - ¿Cuál es el uso/significado del carácter @ en nombres de variables en C#?
variable=int; (9)
Descubrí que puedes comenzar el nombre de tu 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 veía así:
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. También buscar en Google no me dio ninguna respuesta útil. Entonces, ¿cuál es el significado o uso exacto del carácter ''@'' en un nombre de variable / propiedad?
A diferencia de los sigilos de Perl, un prefijo @
antes de un nombre de variable en C # no tiene significado. Si x
es una variable, @x
es otro nombre para la misma variable.
> string x = "abc";
> Object.ReferenceEquals(x, @x).Dump();
True
Pero el prefijo @
tiene un uso , como lo ha descubierto, puede usarlo para aclarar los nombres de variables que C # rechazaría como ilegales.
> string string;
Identifier expected; ''string'' is a keyword
> string @string;
Directamente de la especificación de lenguaje C # , identificadores (C #) :
El prefijo "@" permite el uso de palabras clave como identificadores, lo que es útil cuando se interactúa 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 llama un identificador literal.
El símbolo @
permite usar palabras clave reservadas para el nombre de variable. como @int
, @string
, @double
etc.
Por ejemplo:
string @public = "Reserved Keyword used for me and its fine";
El código anterior funciona bien, pero a continuación no funcionará:
string public = "This will not compile";
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 de idioma.
Específicamente, se puede usar para nombres de variables que chocan con las palabras clave reservadas (por ejemplo, no puede usar params, pero sí puede usar @params, igual que con / ref / cualquier otra palabra clave en la especificación del idioma). Además, se puede utilizar para literales de cadena sin escapar; esto es particularmente relevante con las constantes de ruta, por ejemplo, en lugar de path = "c://temp//somefile.txt"
puede escribir path = @"c:/temp/somefile.txt"
. También es realmente útil para expresiones regulares.
Otro caso de uso es en los métodos de extensión. El primer parámetro especial se puede distinguir para denotar su significado real con @this
nombre. Un ejemplo:
public static TValue GetValueOrDefault<TKey, TValue>(
this IDictionary<TKey, TValue> @this,
TKey key,
TValue defaultValue)
{
if ([email protected](key))
{
return defaultValue;
}
return @this[key];
}
Puede usarlo para usar las palabras clave reservadas como nombre de variable como
int @int = 3;
el compilador ignorará el @
y compilará la variable como int
No es una práctica común usar el pensamiento.
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 "@". Tales identificadores son identificadores literales. 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
Simplemente le permite usar palabras reservadas como nombres de variables. Quería un event
llamado el otro día. Iba a ir con _event
en _event
lugar, pero mi colega me recordó que podía llamarlo @event
en @event
lugar.
Simplemente le permite usar una palabra reservada como nombre de variable. No recomendado IMHO (excepto en casos como el que tiene).