2009-01-07 31 views
35

El uso de asp.net MVC me gustaría hacer esto dentro de una vista:¿Cómo uso una palabra clave C# como nombre de propiedad?

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

Esta declaración no se compila porque la clase es la palabra clave en C#. Me gustaría saber cómo puedo escapar de los nombres de las propiedades para que compile esto.

Es posible hacer que compile si cambio la propiedad "clase" a "Clase" (C mayúscula). Pero esto no es adecuado porque el xhtml estricto dice que todos los nombres de atributos (y elementos) deben estar en minúscula.

Respuesta

95

Puede usar palabras clave en C# como identificadores al anteponer @ enfrente de ellas.

var @class = new object(); 

citar la documentación de MSDN en C# Keywords:

Las palabras clave son identificadores predefinidos, que tienen reservados especiales significados para el compilador. No se pueden usar como identificadores en su programa a menos que incluyan @ como prefijo. Por ejemplo, @if es un identificador válido pero si no es porque si es una palabra clave.

+4

+1 porque no sabía eso. Pero creo que debería considerar no hacer esto en absoluto, mantenerse alejado de keywords-that-arent-keywords siempre que sea posible (C#, SQL, python, whatnot). Obtenga su diccionario de sinónimos y encuentre un sinónimo de lo que está tratando de decir. – jcollum

+3

Una necesidad para esto es cuando se usan cosas definidas en otros idiomas. Pueden tener diferentes listas de palabras reservadas, por lo que algo que era perfectamente válido en el idioma original podría ser inaccesible en C# y viceversa. –

+3

De hecho, Rob, el ejemplo en la pregunta ("clase") es un buen caso de "definido en dos idiomas" (C# y HTML). –

Cuestiones relacionadas