warum geht das \ zeichen in c# nicht?

3 Antworten

mit dem \ werden Sonderfunktionen des nachfolgenden Zeichen aufgehoben.
(Nur Microsoft benutzt es als Trennzeichen für Verzeichnisse)

So wird bei Shell-Progammen das $-Zeichen für "Inhalt von <Name>... " benutzt. Will man also ein $ anzeigen, dann muss die Bedeutung "Inhalt von <Name>" aufgehoben werden. Das geht dann mit \$<Name> in dem Falle wird als wirklich $<Name> benutzt, während $<Name> ohne \ den Inhalt der Variablen "Name" ausgibt.

In deinem Falle musst du die Bedeutung von \ aufheben also \\ benutzen, wenn du nur \ haben möchtest.


Palladin007  27.12.2021, 20:23
mit dem \ werden Sonderfunktionen des nachfolgenden Zeichen aufgehoben.

Nein.

Nur, wenn das nachfolgende Zeichen per Default eine Funktion hat, deaktiviert es diese Funktion. Also der Backslash selber und das einfache bzw. doppelte Anführungszeichen

Es *aktiviert* Sonderfunktionen der nachfolgenden Zeichen, doch in diesen Fällen haben diese nachfolgenden Zeichen einfach keine Sonderfunktionen.

Nur Microsoft benutzt es als Trennzeichen für Verzeichnisse

Microsoft erlaubt beide Slashes.

guenterhalt  27.12.2021, 22:40
@Palladin007

Was heißt Nein?

Die Funktion das \ ist doch das Aufheben der Sonddrfunktion "aufheben"

Palladin007  28.12.2021, 00:24
@guenterhalt

Eben nicht - hab ich doch geschrieben?

Es kann eine Sonderfunktionen aufheben, wenn das darauf folgende Zeichen eine implizite Sonderfunktion hat.

Hier ist das aber nicht der Fall.
Hier versucht das \ eine explizite Sonderfunktion zu aktivieren, die es aber nicht gibt.

using System;
class Prog{
  public static void Main(string[] args){
    Console.WriteLine("Test \\ blah"); //normaler String
    Console.WriteLine(@"Test \ blah"); //Stringliteral 
    Console.ReadKey();
  }
}

Ein Backslash ist ein Escapezeichen

In einer Stringzuweisung wird muss ein Backslash verdoppelt werden um als Textzeichen erkannt zu werden.

In C# wird ein kompletter String als Literal ausgewertet, wenn man der Zuweisung ein @ voranstellt. Dann wird der String so dargestellt, wie er im Code geschrieben wurde.

Das \ wird für die Escape-Sequenz (kann man googlen, wenn man den Begriff kennt ;-)) benötigt um andere Sachen darzustellen (z.B. einen Zeilenvorschub). Um ein\ darzustellen, musst du es selber "escapen", also \\ schreiben.