2011-01-19 9 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#?Cosa significa "@" char prima del nome del parametro nella dichiarazione del metodo?

Ciao,

Ho una domanda veloce. Cosa significa '@' char prima del nome del parametro nella dichiarazione del metodo? Mi piace seguire:

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

Io uso C# con .net 3.5.

Grazie.

+1

Si tratta di un carattere di escape che consente di utilizzare le parole riservate come identificatori. Questa domanda viene posta molto. Vedi: http://stackoverflow.com/questions/429529/what-does-the-symbol-before-a-variable-name-mean-in-c –

risposta

16

Consente l'utilizzo di parole riservate come identificatori. Di solito viene utilizzato dai generatori di codice che possono utilizzare nomi di origine da sistemi con parole chiave diverse rispetto alla lingua di destinazione, ad es. nomi di tabelle e nomi di argomenti sproc.

+1

'arg1' è una parola riservata? – BoltClock

+1

@BoltClock: Sì, a volte è usato in modo superfluo. Posso solo immaginare che il programmatore che inizialmente lo fa non abbia idea di cosa significhi, ma l'ha visto da qualche parte e ha pensato che fosse bello. Oppure, come sottolinea la risposta, a volte ciò viene fatto dai generatori di codice automatici. –

+1

@BoltClock No, non lo è, ma il generatore di codice non lo sa.I generatori di codice spesso posizionano il simbolo @ davanti a tutti gli identificatori. –

7

È un modo per sfuggire a un identificatore.

E.g. il seguente due sono equivalenti:

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

@ è soltanto realmente utile se avete bisogno di nominare un identificatore dopo una parola chiave. Il seguito non sarebbe compilare senza la @:

protected void Method1(Type1 @class, Type2 arg2)

1

Per esempio specifico, non ha alcun significato. In C#, il simbolo @ viene utilizzato per evitare le parole chiave in modo che possano essere utilizzate come nomi di variabili.

Per esempio, il seguente genererebbe un errore di compilazione:

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

Ma se fuggire con @, è bene:

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

E 'usato per aver riservato parole come parametri. Esempio:

string @string = "abc"; 

o:

string @class = "foo"; 

arg1 non è una parola riservata in modo da utilizzare @ non è necessario. Detto questo, usare parole riservate per nominare i parametri non è una buona idea. Ci sono casi anche se questo è utile. Ad esempio in ASP.NET MVC alcuni metodi di estensione HTML accettano un oggetto anonimo come parametro per emettere attributi html. In modo da avere la sintassi simile a questo:

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

che genera:

<a href="/controller/action" class="abc">text</a> 
Problemi correlati