2010-09-26 16 views
10

Al codificar en C#, por error agregué un signo de strudel antes de una variable en la instrucción if (en lugar de un signo de exclamación).C# strudel sign

bool b = false; 
if (@b) 
{ 

} 

Lo sorprendió compilado correctamente sin ningún error.

Me pregunto: ¿Cuál es el significado del código anterior?

+4

De http://en.wikipedia.org/wiki/Strudel - "Strudel había sido parte de la cocina israelí desde la llegada de numerosos inmigrantes de Europa Central en el 1920 y 1930, y el nombre ha sido tomado en hebreo (שטרודל). Desde la introducción del correo electrónico, el signo at (@) se conoce como "strudel" en hebreo coloquial ". – herzmeister

+2

Supongo que lo llaman así porque los caracoles no son kosher. – bmargulies

Respuesta

18

@ se puede utilizar para "escapar" identificadores, en caso de que desee utilizar palabras clave. Por ejemplo:

int @class = 10; 

Por supuesto que es por lo general una mala idea utilizar palabras clave como identificadores, pero si usted está utilizando una biblioteca de clases que pasa a utilizarlas, que puede ser difícil de evitar. También puede ser útil a veces usar "@this" para situaciones en las que desea efectivamente tener una referencia this, pero por alguna razón no puede usar una. (Estos son muy pocos y distantes, pero lo he visto un par de veces, y al menos vale la pena saberlo.)

+2

Muy impresionante, Skeet, pero ¿qué sabes sobre el strudel? Hmm? :RE –

11

La respuesta de Jon lo resume. Un ejemplo de cuándo debe usar esta técnica de escape es especificar atributos de HTML en tipos anónimos para ayudar a los métodos en ASP.NET MVC.

Html.ActionLink("text", "action", "controller", 
    new { @class = "some-css-class" }, null); 

también me he pegado a esta hora de componer los tipos anónimos para su publicación a través de HTTP utilizando JSON codificación, donde no se puede modificar el API remota.

1 para 'strudel' también :)

Cuestiones relacionadas