2010-09-26 4 views
10

Beim Codieren in C# fügte ich versehentlich ein Strudelzeichen vor einer Variablen in if-Anweisung (statt Ausrufezeichen) ein.C# -Strudelzeichen

bool b = false; 
if (@b) 
{ 

} 

Ich überraschte es erfolgreich kompiliert ohne Fehler.

Ich frage mich: Was bedeutet der obige Code?

+4

Von http://en.wikipedia.org/wiki/Strudel - „Strudel hatte in dem Teil der israelischen Küche seit der Ankunft zahlreicher Einwanderer aus Mitteleuropa gewesen In den 1920er und 1930er Jahren wurde der Name in hebräisch (שטשטדדד) übernommen. Seit der Einführung der E-Mail wurde das At-Zeichen (@) im umgangssprachlichen Hebräisch als "Strudel" bekannt. – herzmeister

+2

Ich nehme an, sie nennen das, weil Schnecken nicht koscher sind. – bmargulies

Antwort

18

@ kann verwendet werden, um Kennungen zu "entkommen", falls Sie Schlüsselwörter verwenden möchten. Zum Beispiel:

int @class = 10; 

Natürlich ist es in der Regel eine schlechte Idee Schlüsselwörter als Bezeichner zu verwenden, aber wenn Sie eine Klassenbibliothek verwenden, die sie nutzen geschieht, kann es schwer zu vermeiden sein. Es kann auch nützlich sein, "@this" für Situationen zu verwenden, in denen Sie effektiv eine this Referenz haben möchten, aber aus welchen Gründen auch immer Sie keine verwenden können. (Das sind ziemlich wenige und weit dazwischen, aber ich habe es ein paar Mal gesehen, und es lohnt sich zumindest darüber zu wissen.)

+2

Sehr beeindruckend, Skeet, aber was weißt du über Strudel? Hmm? : D –

11

Jon's Antwort fasst es zusammen. Ein Beispiel dafür, wann Sie diese Technik des Escapes verwenden müssen, besteht darin, HTML-Attribute in anonymen Typen für Hilfsmethoden in ASP.NET MVC anzugeben.

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

Ich habe traf auch diese, wenn sie über HTTP mit JSON-Codierung für die Veröffentlichung anonyme Typen zu komponieren, in dem Sie die Remote-API nicht ändern können.

+1 für ‚Strudel‘ too :)