myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE
   » Gadget für Windows
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin
» Accessoires

Ressourcen
» .NET-Glossar
» guide to C#
» openbook: Visual C#
» openbook: OO
» .NET BlogBook
» MSDN Webcasts
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Bankverbindung
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Knowledge Base » FAQ » [FAQ] Was bedeutet das @ (=at) vor String-Literalen? Und: Wissenswertes zu Escape-Sequenzen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[FAQ] Was bedeutet das @ (=at) vor String-Literalen? Und: Wissenswertes zu Escape-Sequenzen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
herbivore
myCSharp.de-Team (Admin)

images/avatars/avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 48.721
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

[FAQ] Was bedeutet das @ (=at) vor String-Literalen? Und: Wissenswertes zu Escape-Sequenzen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Community,


der Vorteil der @-Schreibweise von String-Literalen besteht darin, dass  Escapesequenzen wie \n für Newline nicht verarbeitet werden. Dadurch kann man z.B. @"c:\neu\datei.txt" statt "c:\\neu\\datei.txt" schreiben.


Wenn man in der @-Schreibweise einen String schreiben will, der selbst Anführungszeichen enthält, dann muss man die Anführungszeichen verdoppeln.

@"Er sagte: ""Hallo""" entspricht "Er sagte: \"Hallo\""


Man kann in der @-Schreibweise sogar Zeilenumbrüche direkt in den String packen:

@"Zeile1
Zeile2"


entspricht

"Zeile1\nZeile2" oder "Zeile1\r\nZeile2"

je nachdem, was der Editor als Zeilentrenner in die Quelldatei schreibt.


Die ganze Geschichte steht in der MSDN:

 string (C#-Referenz)


herbivore


PS:  Escapesequenzen wie \n werden nur vom Compiler und nur innerhalb von (String-)Literalen behandelt und umgesetzt - bzw. in der @-Schreibweise eben ignoriert. Wenn zur Laufzeit Zeichen wie \ und n erstmal in einem String oder einer Datei stehen, erfolgt logischerweise keine automatische Umsetzung mehr, sondern dann werden die Zeichen als (zwei) normale, unabhängige Zeichen behandelt. Man kann die Umsetzung selber vornehmen, z.B. mit

C#-Code:
myString = myString.Replace (@"\n", "\n");


PPS: Im Debugger werden bei der Anzeige von String-Werten enthaltene Backslashes automatisch gedoppelt. Die Zeichenfolge aus den zwei Zeichen \ und n wird als "\\n" angezeigt. Der im String enthaltene Backslash wird nur für die Anzeige gedoppelt; im String selbst ist er weiterhin nur einmal vorhanden. Ein einfacher, einzelner Zeilenvorschub wird dagegen als "\n" angezeigt; im String selbst ist weiterhin nur ein einziges Zeichen, nämlich der Zeilenvorschub vorhanden.


PPPS: Siehe auch  [FAQ] Besonderheiten der String-Klasse (immutabler Referenztyp mit Wertsemantik)
03.04.2007 16:16 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 7 Jahre.
Der letzte Beitrag ist älter als 7 Jahre.
Antwort erstellen


© Copyright 2003-2014 myCSharp.de-Team. Alle Rechte vorbehalten. 24.07.2014 23:41