Mathias hat geschrieben:Diese Methoden konnte ich aufrufen, ohne das es eine Schutzverletzung kam, obwohl keine Create-Anweisung im Code ist.
Liegt das dran, das hier nur Methoden sind und keine Instancen ?
Erstelle immer erst die Objekte, bevor du dessen Methoden aufrufst! Alles andere fällt nicht einmal mehr unter grob fahrlässig sondern fällt mindestens unter vorsätzliche Dummheit.
Im Detail heißt das: Bei dem Schlüsselwort
object wird die Instanz auf dem Stack abgelegt. Der Speicher ist also immer reserviert, enthält gegebenenfalls aber Müll. Eine Schutzverletzung kann also nicht auftreten. Bei dem Schlüsselwort
class ist die Variable nur ein Zeiger auf die Instanz; die Instanz selbst wird im Heap abgelegt; der Speicher wird nicht automatisch reserviert. Ob eine Schutzverletzung auftritt hängt vom Zufall ab!
Andererseits kann man aber auch sagen: greift eine Methode nicht auf das eigene Objekt zu, passiert nichts. In diesem Falle kann man sie genau so gut als Klassen-Methode (siehe Doku) deklarieren -- das ist besserer Programmierstil.