Nur statische Felder ohne Objektverweis aufrufbar C#?

1 Antwort

Du benötigst bei einem nicht statischen Objekt auch immer einen Objektverweis.

Mach dir das mal an einem Beispiel klar:

Du hast eine Klasse Auto und möchtest damit beispielhaft mal einen Fuhrpark einer Firma abbilden. Der Fuhrpark besteht aus drei unterschiedlichen Autos. Jedes Auto hat also auch einen eigenen Motor mit unterschiedlichen Werten wie der Leistung in kW. Wenn du nun eine Klasse Auto implementierst und darin wiederum eine Methode, welche dir Angaben zum Motor macht (z.B. GetLeistung), dann muss der Compiler natürlich auch wissen, um welchen Motor handelt es sich? Du brauchst erst einmal ein Objekt Auto, und darauf kannst du dann GetLeistung aufrufen, um von diesem Auto die Leistung zu erfragen.

Was soll der Compiler tun, wenn du

Auto.GetLeistung(); //funktioniert nicht

aufrufst, ohne, dass du ein Auto angelegt hast und keine Angaben zum Motor gemacht hast?

Du musst erst eine Objektinstanz erzeugen und kannst dann für das Objekt die Methode aufrufen:

Auto bmw = new Auto("BMW X5", 110);
Debug.Log(bmw.GetLeistung());

Die Methode GetLeistung ist dann natürlich auch eine nicht statische Methode (also nicht das Schlüsselwort static verwenden). Ebenso darf das Attribut bzw. Feld Leistung nicht als static deklariert sein.

Du musst dich beim implementieren der Klasse Auto natürlich schon fragen, welche Attribute statisch sind und welche nicht. Attribute, welche für jedes Auto gleich sind, können grundsätzlich statisch sein. Dabei kannst du dann auch die Methode ohne Objektinstanz aufrufen. Attribute, welche bei jedem Auto anders sein können, dürfen nicht statisch sein und sind immer an eine Objektinstanz gebunden.