„Stop“ ist in VB.Net ein Schlüsselwort, das heißt es darf nicht als Bezeichner verwendet werden. Trotzdem findet man im .Net-Framework Klassen, die eine ihrer Methode „Stop“ genannt haben, wie zum Beispiel die verschiedenen Timer-Klassen.
Auch wenn dieses Problem eher exotisch ist, so habe ich mich doch gefragt, wie diese Klassen das tun können bzw. wie ich es selber tun kann. Würde ich mit C# programmieren, dann wäre alles kein Problem, da dort „Stop“ kein Schlüsselwort ist. Wenn man es in VB.Net trotzdem versucht und „Stop“ als Bezeichner verwendet, dann meldet der Compiler einen Fehler (logischerweise):
Keyword is not valid as an identifier.
Interessanterweise konnte auch Google mir hier nicht helfen. Vielleicht habe ich die falschen Suchbegriffe verwendet. Ich habe meine Methode dann „Stopp“ genannt, also mit doppel-p. Ein paar Wochen später habe ich aber durch Zufall herausgefunden, dass die Lösung ganz einfach ist:
Man kann jedes Schlüsselwort in eckige Klammern setzen, dann wird daraus ein Bezeichner mit dem in den Klammern angegebenen Namen:
Public Sub [Stop]()
' irgendwas tun
End Sub
Das ist übrigens auch der Grund, warum man beim Zugreifen auf die statischen Methoden der Enum-Klasse „[Enum].Methode()“ schreiben muss (statt „Enum.Methode()“). Denn „Enum“ ist auch ein Schlüsselwort. Das war mir lange Zeit suspekt, aber es ist wohl eine logische Konsequenz daraus, dass man ein Framework für mehrere Sprachen bereitstellt.
2 Antworten auf „[VB.Net] Eine Methode „Stop“ nennen“
In C# geht das übrigens mit dem @-Symbol.
Eine Anekdote zum Thema: Frank Eller, der Author von finsters C#-Buch, hat es im Ernst fertiggebracht, diesen Zusammenhang nicht zu verstehen. Er erklärte zuerst, dass .NET mehrere Sprachen unterstützt, und erklärte die Möglichkeit, Schlüsselwörter als Bezeichner zu verwenden wenige Seiten danach für sinnlos.
Frank Eller bekommt von mir einen Award für „rekordverdächtig inkompetenter Author eines technischen Buches“. Was ich an Mist beim Durchblättern dieses Machwerks gesehen habe spottet jeder Beschreibung.
[…] die Funktion, Schlüsselwörter als Bezeichner einsetzen zu können “unnötig”. Siehe Flips Blogeintag: Verschiedene Sprachen haben verschiedene Schlüsselwörter; die Funktion ist unabdingbar, falls […]