Wuste ich auch noch nicht.
var \u0078 = "Wert der Variablen x";
Console.WriteLine(x);
var \u0061\u0062\u0063 = "Wert der Variablen abc";
Console.WriteLine(abc);
Console.ReadKey();
Würde mich mal Interessiern, was andere denken, was das Ergebnis ist (Bevor sie es Ausprobieren).
Sollte man mal gelesen haben:
Hallo,
jop, schon mal gesehen: so stehts auch in der C# Language Specification, Abschnitt E.3.1
Unter Mono kompiliert der Code übrigens nicht, das x
kriegt er noch hin, das abc
führt zu> Fehlermeldung:
The name `abc' does not exist in the current context (CS0103)
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Obfuscatoren nutzen das z.B. im dem sie dann die Variablennamen in irgendwelche exotischen (nicht druckbare) Zeichen umwandeln um die Rückverfolgbarkeit des Codes im Reflector zu erschweren. Ich glaub der .net Reflector stürzt sogar bei bestimmten Zeichen ab. Zumindest ältere Versionen.
using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}
Hallo Palin,
der Grund für Escapesequenzen in Bezeichnern liegt wohl darin, dass man das Encoding des Quellcodes frei wählen (und dies dem Compiler z.B. per /codepage-Option mitteilen) kann. Viele Programmierer werden dafür (in Deutschland typischerweise) Windows-1252/Latin-1 verwenden. Das ist allerdings ein reiner 8-bit-Zeichensatz; darin sind also nur 256 Zeichen codiert. Wenn nun jemand anderes eine Bibliothek schreibt und für deren Quellcode einen anderen Zeichensatz verwendet und z.B. für einen Methodennamen ein Zeichen verwendet, das in Windows-1252 nicht enthalten ist, könnte man ohne die Escapesequenzen in Bezeichnern, die Methode aus dem eigenen Windows-1252-codierten Quellcode nicht aufrufen.
Anderseits würde ich - gerade aus diesem Grund - nachdrücklich dafür plädieren, für Bezeichner (neben den Ziffern von 0-9 und ggf. noch dem Unterstrich) nur die 2*26 ASCII-Buchstaben verwenden, also keine Umlaute und schon gar nicht Zeichen, die in Windows-1252 nicht enthalten sind.
herbivore