2011-03-12 4 views
3

Je suis juste allé à écrire la ligne ...Que fait '@' dans C#?

if (!e.PeriodicData.Keys.Contains(process)) 
{ 
} 

mais a fait une faute de frappe sur "!" et appuyez sur "@" à la place. par exemple

if (@e.PeriodicData.Keys.Contains(process)) 
{ 
} 

Je m'attendais à ce que intellisense se déconnecte mais ce n'est pas le cas. J'ai donc compilé et compilé avec succès.

Ce n'est pas un operator, alors c'est quoi "@"? Qu'est ce que ça fait?

Répondre

9

Dans ce cas, c'est un nom valide. Il est utilisé si vous voulez utiliser un mot-clé comme nom de variable comme @class.

Voir: What does placing a @ in front of a C# variable name do?

+2

Cela dit - ne pas faire cela. Il est particulièrement déroutant d'utiliser des mots-clés comme noms de variables. – Joe

+1

Dans certains cas, c'est inévitable - en particulier avec HtmlHelpers de MVC qui prennent des attributs HTML. –

+0

Une réponse comme celle-ci est un très bon signe que vous devriez avoir voté pour fermer la question en tant que doublon. Je ne suis pas vraiment sûr pourquoi tu ne l'as pas fait; vous ne semblez pas ajouter d'informations au-delà de celles données dans les réponses à l'autre question. –

6

Dans ce cas, il est juste de la variable e. C'est équivalent à e.

Le symbole @ avant qu'une valeur var soit utilisée si vous souhaitez appeler une variable class par exemple. Utiliser des mots réservés en tant que variables

var @class = 1; 
var @virtual = 2; 
var @return = 3; 

Quant aux chaînes qu'il utilise le littéral, par exemple:

"C:\\test\\example\\" 

équivaut à

@"C:\test\example\"