Wie allerdings sonst prozedur-/funktionsübergreifend Informationen ausgetauscht werden sollen, ist mir rätselhaft.
Parameter und brauchbares Klassendesign. Ich habe globale in C# nie vermissen müssen, weil ich es nie als für nötig empfand mir diese unter Delphi anzugewöhnen. Auch so Krücken wie Break, Continue und Exit kann man sich gerade unter Delphi einfach mal schenken, wenn man mit guten Bezeichnern verständliche Konditionen bastelt - unter C-likes ist zumindest das break für nicht-durchfallende case-Statements doch unverzichtbar.
Wenn es eine Warnung dafür geben sollte, müsste sie lauten "Lern es richtig zu machen!".
In Sachen "with" muss ich leider VB einen Gummipunkt verpassen: Durch den dort noch nötigen Punktoperator ist die Eindeutigkeit trotz ersparter Schreibarbeit und Beibehaltung der Übersichtlichkeit gegeben. So wie er in Delphi realisiert ist, nutze ich ihn maximal für im Code erstellte und initialisierte
VCL Komponenten unter sehr definierten Bedingungen, und selten wenn weniger als 5-8 Zeilen dadurch kürzer würden. Sobald die implizite Referenz auf der "rechten Seite" auftaucht, qualifiziere ich jedoch immer zumindest bis auf den Klassen/-Instanznamen. Birgt zwar noch immer die Risiken die genannt wurden, jedoch ist unser Code nicht für andere Programmierer gedacht/zugänglich, und wenn es nicht mehr geht fällt es ohnehin auf mich zurück
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)