Jeder weiß, dass Sie zumindest in C die printf
Funktionsfamilie zum Drucken einer formatierten Zeichenfolge verwenden. Und diese Funktionen verwenden ein Prozentzeichen ( %
), um den Anfang eines Formatbezeichners anzugeben. Zum Beispiel %d
bedeutet "Drucken" int
und " %u
Drucken" unsigned int
. Wenn Sie mit der printf
Funktionsweise und der Formatierung von Platzhaltern nicht vertraut sind oder einfach eine Auffrischung benötigen, ist der Wikipedia-Artikel ein guter Ausgangspunkt.
Meine Frage ist, gibt es einen besonders zwingenden Grund, warum dies ursprünglich als Formatspezifizierer gewählt wurde oder in Zukunft gewählt werden sollte?
Offensichtlich wurde die Entscheidung vor langer Zeit getroffen (sehr wahrscheinlich für einen Vorgänger der C-Sprache), und seitdem ist sie mehr oder weniger "Standard" (nicht nur in C, sondern auch in einer Vielzahl anderer Sprachen) haben ihre Syntax in unterschiedlichem Maße übernommen. Es ist also viel zu spät, um sie jemals zu ändern. Aber ich bin immer noch gespannt, ob jemand weiß, warum diese Wahl überhaupt getroffen wurde und ob es immer noch Sinn macht, eine neue Sprache mit ähnlichen Funktionen zu entwerfen.
Beispielsweise traf Microsoft mit C # (und der anderen Familie von .NET-Sprachen) eine etwas andere Entscheidung hinsichtlich der Funktionsweise der Zeichenfolgenformatierungsfunktionen. Obwohl dort ein gewisses Maß an Typensicherheit erzwungen werden kann (im Gegensatz zur Implementierung von printf
in C) und daher keine Angabe des Typs des entsprechenden Parameters erforderlich ist , haben sie sich für die Verwendung von geschweiften Klammernpaaren mit Index Null entschieden ( {}
). als Formatbezeichner wie folgt:
string output = String.Format("In {0}, the temperature is {1} degrees Celsius.",
"Texas", 37);
Console.WriteLine(output);
// Output:
// In Texas, the temperature is 37 degrees Celsius.
Die Dokumentation für die String.Format
Methode enthält weitere Informationen, ebenso wie dieser Artikel zur Verbundformatierung im Allgemeinen , die genauen Details sind jedoch eher unwichtig. Der Punkt ist einfach, dass sie die langjährige Praxis %
, den Beginn eines Formatspezifizierers anzugeben , aufgegeben haben . Die C-Sprache hätte einfach verwendet werden können {d}
und {u}
, aber das war nicht der Fall. Hat jemand irgendwelche Gedanken darüber, warum, ob diese Entscheidung im Nachhinein sinnvoll ist und ob neue Implementierungen folgen sollten?
Offensichtlich gibt es kein Zeichen, das ausgewählt werden könnte, ohne dass es ausgeblendet werden müsste, damit es in den String selbst aufgenommen werden kann, aber dieses Problem ist bereits durch die Verwendung von nur zwei davon ziemlich gut gelöst . Welche weiteren Überlegungen sind relevant?
{u}
anstelle von zu verwenden, %u
aber hätte es einen signifikanten Vorteil? Es scheint eine weitgehend willkürliche Wahl zu sein.
{}
Syntax absichtlich so gewählt haben, dass Leute, die C # lernen, nichts anderes lernen würden? Ich finde es sehr schwer zu glauben, dass dies ein wichtiger, wenn überhaupt ein Teil ihrer Designentscheidung war. Können Sie Ihre Aussage irgendwie sichern?
%
Formatierung (eine weit überlegene Form) zugunsten einer ähnlichen {}
Formatierung wie .NET aufgegeben, da diese mehr Flexibilität bietet.