2009-01-07 7 views
35

En utilisant asp.net MVC Je voudrais faire l'intérieur d'une vue:Comment utiliser un mot clé C# comme nom de propriété?

<%= Html.TextBox("textbox1", null, new { class="class1" }) %> 

Cette déclaration ne compile pas parce que la classe est mot-clé dans C#. Je voudrais savoir comment je peux échapper aux noms de propriété tels que cela compile.

Il est possible de compiler ceci si je change la propriété "class" en "Class" (majuscule C). Mais ce n'est pas approprié parce que xhtml strict dit que tous les noms d'attributs (et d'éléments) doivent être en minuscules.

Répondre

95

Vous pouvez utiliser des mots-clés en C# comme identifiants en ajoutant @ devant eux.

var @class = new object(); 

Voici un extrait de la documentation MSDN sur C# Keywords:

Mots-clés sont des identifiants prédéfinis, réservés qui ont spéciales significations au compilateur. Ils ne peuvent pas être utilisés comme identifiants dans votre programme à moins qu'ils n'incluent @ comme préfixe. Par exemple, @if est un identificateur valide mais si n'est pas un mot-clé si.

+4

+1 parce que je ne le savais pas. Mais je pense que vous devriez envisager de ne pas le faire du tout, rester loin des mots-clés-que-arent-mots-clés dans la mesure du possible (C#, SQL, python, whatnot). Sortez votre thésaurus et trouvez un synonyme pour ce que vous essayez de dire. – jcollum

+3

Un besoin pour cela est d'utiliser des choses définies dans d'autres langues. Ils peuvent avoir différentes listes de mots réservés, donc quelque chose qui était parfaitement valide dans la langue d'origine pourrait autrement être inaccessible en C#, et vice versa. –

+3

En effet, Rob, l'exemple dans la question ("class") est un bon cas de "défini en deux langues" (C# et HTML). –

Questions connexes