Kommentar aus Code: kleiner Life-Hack

Trotz der Einfachheit (und im Allgemeinen der Trivialität, wenn Sie darüber nachdenken) der beschriebenen Lösung bin ich rein zufällig darauf gestoßen, während ich das fertige Programm, das zur Auslieferung bereit ist, mit einem Kommentar dekoriert habe.

In der Programmierpraxis tritt regelmäßig eine Situation auf, in der während der Entwicklung und des Debuggens ein Code aktiviert und ein anderer deaktiviert werden muss. Dies ist einfach mit speziellen Konstruktionen wie #if true ... #else ... #endif , dem Ändern von true in false oder dem Rückgriff auf anspruchsvollere Bedingungen. Dieses Design ermöglicht jedoch nicht die Erstellung von mehr als zwei alternativen Codeabschnitten.

In Sprachen, die einen Kommentar wie /* ... */ c unterstützen, können Sie mit einer leicht nicht standardmäßigen Konstruktion /**/ ... /*/ ... /*/ ... /**/ so viele beliebige abwechselnde Codeabschnitte erstellen, wie wird abwechselnd mit nur einem Leerzeichen im ersten (Anfang) der Kommentare ein- und ausgeschaltet.

Zum Beispiel:

 /**/ Console.Write("1"); /*/ Console.Write("2"); /*/ Console.Write("3"); /*/ Console.Write("4"); /**/ Console.Write("5"); 

Bei der Ausführung gibt dieser Code die Zeichenfolge "135" an die Konsole aus. Das heißt, alle ungeraden Ausgabeoperatoren werden ausgeführt - und der letzte, der sich bereits außerhalb der gesamten Struktur befindet. Wenn Sie jedoch ein Startzeichen (oder genau genommen ein beliebiges Zeichen außer einem Sternchen) in den Startkommentar zwischen dem zweiten Sternchen und dem Schrägstrich einfügen, gibt derselbe Code die Zeichenfolge "245" : Es werden nur gerade Operatoren und erneut der letzte ausgeführt schon draußen. (UPD: Danke an FluffyMan für den Hinweis auf den Fehler).

Die Syntax der Trennkommentare ist äußerst streng: Sie können dem Konstrukt /*/ nichts hinzufügen oder hinzufügen, dies zerstört seine Funktionalität. Die Syntax der Start- und Stoppkommentare ist dagegen völlig willkürlich. Es kann minimalistisch zu /**/ oder beliebige - im Sinne der Sprache legale - Kommentare enthalten. Daraus geht hervor, dass Start- und Stoppkommentare unbedingt erforderlich sind und dass es einfach unmöglich ist, einen legalen Kommentar wie /* ... */ innerhalb der Struktur selbst zu verwenden, weil Es wird sofort zu einem Stopp für die gesamte vorherige Folge von Kommentartrennzeichen /*/ und zu einem Start für die gesamte nachfolgende Folge von Trennzeichen. Die sinnvolle Verwendung solcher Einsätze kann jedoch nützlich sein.

Einzeilige Kommentare // haben keinen Einfluss auf die Funktionalität.

Dixi :)

Source: https://habr.com/ru/post/de434300/


All Articles