2011-01-19 17 views
13

Possible Duplicates:
What does the @ symbol before a variable name mean in C#?
What's the use/meaning of the @ character in variable names in C#?¿Qué significa '@' char antes del nombre del parámetro en la declaración del método?

Hola,

Tengo una pregunta rápida. ¿Qué significa '@' char antes del nombre del parámetro en la declaración del método? Como el siguiente:

protected void Method1(Type1 @arg1, Type2 arg2) 
... 

Uso C# con .net 3.5.

Gracias.

+1

Es un carácter de escape que permite el uso de palabras reservadas como identificadores. Esta pregunta se pregunta mucho. Ver: http://stackoverflow.com/questions/429529/what-does-the-symbol-before-a-variable-name-mean-in-c –

Respuesta

16

Permite usar palabras reservadas como identificadores. Usualmente es usado por generadores de código que pueden estar usando nombres de fuente de sistemas con diferentes palabras clave que el idioma de destino, p. nombres de tablas y nombres de argumentos sproc.

+1

'arg1' es una palabra reservada? – BoltClock

+1

@BoltClock: Sí, a veces se usa de manera superflua. Solo puedo imaginarme que el programador que originalmente hace esto no tiene idea de lo que significa, pero lo vio en algún lado y pensó que se veía genial. O, como lo señala la respuesta, esto a veces lo hacen los generadores de códigos automáticos. –

+1

@BoltClock No, no lo es, pero el generador de código no lo sabe.Los generadores de código a menudo colocan el símbolo @ delante de todos los identificadores. –

7

Es una forma de escapar de un identificador.

E.g. los dos siguientes son equivalentes:

protected void Method1(Type1 @arg1, Type2 arg2) 
protected void Method1(Type1 arg1, Type2 arg2) 

@ sólo es realmente útil si lo que necesita para nombrar un identificador después de una palabra clave. La continuación no se compilará sin la @:

protected void Method1(Type1 @class, Type2 arg2)

1

Para su ejemplo específico, no tiene sentido. En C#, el símbolo @ se usa para escapar de las palabras clave para que puedan usarse como nombres de variables.

Por ejemplo, la siguiente sería generar un error de compilación:

public void Test(string class){...} 

Pero si escapas con @, está bien:

public void Test(string @class){...} 
2

Se utiliza para haber reservado palabras como parámetros. Ejemplo:

string @string = "abc"; 

o:

string @class = "foo"; 

arg1 no es una palabra reservada así que usar @ no es necesario. Dicho esto, usar palabras reservadas para nombrar tus parámetros no es una buena idea. Sin embargo, hay casos donde esto es útil. Por ejemplo, en ASP.NET MVC algunos métodos de extensión HTML toman un objeto anónimo como parámetro para emitir atributos html. Por lo que tiene una sintaxis como esta:

<%= Html.ActionLink("text", "action", "controller", null, new { @class = "abc" }) %> 

que genera:

<a href="/controller/action" class="abc">text</a> 
Cuestiones relacionadas