Pregunta

He descubierto que puedes iniciar tu nombre de variable con un carácter '@' en C#.En mi proyecto de C# yo estaba usando un servicio web (he añadido una web de referencia para mi proyecto) que fue escrito en Java.Uno de los objetos de la interfaz definida en el WSDL había un miembro de la variable con el nombre de "parámetros".Obviamente esta es una palabra reservada en C# por lo que no se puede tener una clase con un miembro de la variable con el nombre de "parámetros".El objeto proxy que se ha generado contenía una propiedad que se veía así:

public ArrayList @params {
    get { return this.paramsField; }
    set { this.paramsField = value; }
}

He buscado a través de el VS 2008 documentación de c#, pero no podía encontrar nada al respecto.También la búsqueda de Google no me da ningún respuestas útiles.Entonces, ¿cuál es el significado exacto del carácter '@' en una variable/nombre de la propiedad?

¿Fue útil?

Solución

Directamente desde el Especificación Del Lenguaje C# , Identificadores (C#) :

El prefijo "@" permite el uso de palabras clave como identificadores, que es útil cuando se interactúa con otros los lenguajes de programación.El carácter @ no es realmente parte de la identificador, por lo que el identificador puede ser visto en otros idiomas como el normal identificador, sin el prefijo.Un identificador con un prefijo @ se llama un verbatim identificador.

Otros consejos

Sólo se permite el uso de una palabra reservada como un nombre de variable.No se recomienda en mi humilde opinión (excepto en casos como el que usted tiene).

En C# la arroba (@) de caracteres se utiliza para referirse a los literales que explícitamente no se adhieren a las normas pertinentes en el lenguaje de especificación.

Específicamente, puede ser utilizado para los nombres de variable que chocan con las palabras reservadas (por ejemplo,usted no puede utilizar params pero se puede usar @params lugar, lo mismo con a/ref/cualquier otra palabra clave en la especificación del lenguaje).Además puede ser utilizado para sin escape literales de cadena;esto es particularmente relevante con el trazado de las constantes, por ejemplo,en lugar de path = "c:\\temp\\somefile.txt" usted puede escribir path = @"c:\temp\somefile.txt".También es muy útil para las expresiones regulares.

A diferencia de Perl sigilos, un @ prefijo antes de un nombre de variable en C# no tiene ningún 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 usted ha descubierto - se puede utilizar para aclarar las variables de nombres que C# contrario podría rechazar como ilegal.

> string string;
Identifier expected; 'string' is a keyword

> string @string;

El @ el símbolo permite el uso de palabras clave reservadas para el nombre de la 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";

Simplemente permite el uso de palabras reservadas como nombres de variables.Yo quería un var llamado event el otro día.Yo iba a ir con _event en lugar de eso, pero mi colega me recordó que yo sólo podríamos llamar @event en su lugar.

Otro caso de uso es en los métodos de extensión.La primera, especial parámetro puede ser distinguidos 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 (!@this.ContainsKey(key))
        {
            return defaultValue;
        }

        return @this[key];
    }

Si usamos una palabra clave como nombre de un identificador, se obtiene un error de compilador "identificador de espera, Identificador de Nombre' es una palabra clave" Para superar este error, el prefijo del identificador con "@".Dichos identificadores son textuales identificadores.El carácter @ en realidad, no es parte del identificador, por lo que el identificador puede ser visto en otros idiomas como normal identificador, sin el prefijo

Se puede utilizar para el uso de las palabras clave reservadas como nombre de variable como

 int @int = 3; 

el compilador ignora la @ y compilar la variable como int

no es una práctica común utilizar el pensamiento

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top