Visual C# 2012 Grundkurs

Statische Mitglieder einer Klasse

Testen Sie unsere 1958 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die statischen Mitglieder einer Klasse existieren innerhalb einer Klasse nur einmal und werden von allen Objekten vom Typ der Klasse geteilt.

Transkript

In diesem Abschnitt möchte ich auf statische Mitglieder von Klassen und auf statische Klassen selbst eingehen. Wenn ich hier so eine Klasse schreibe, und diese Klasse hat jetzt irgendein Mitglied, z.B. so, dann hat praktisch jede Instanz der Klasse also, wenn ich ein Objekt von dieser Klasse erzeuge ein eigenes solches Mitglied, die sich gegenseitig auch nicht beeinflussen. Dieses Verhalten, das kann ich ändern, indem ich das Schlüsselwort Static davornehme. Das heißt jetzt, dass diese Mitgliedsvariable zur Klasse gehört. Und, um das jetzt noch einmal ein bisschen klarer zu machen, mache ich jetzt dieses I mal öffentlich und ich schreibe hier noch eine Methode. Diese Methode erhöht den Wert von I um 1. Jetzt lege ich neue Instanzen davon an. Ich habe jetzt zwei Objekte und jetzt-- Die Methode muss auch öffentlich sein, sonst kann ich sie hier nicht benutzen in diesem Kontext. Jetzt rufe ich dieses C1.foo auf und jetzt dieses C2.foo und danach gebe ich diesen Wert I von dieser Klasse mal aus. Das Ganze starte ich jetzt und es passiert das, was wir erwarten, d.h. diese statische Variable. Davon gibt es für die gesamte Klasse nur eine; alle Instanzen dieser Klasse können jetzt mit dieser Variablen arbeiten. Aber noch mehr: Sie sehen, dass ich den Wert hier von diesem I ausgebe. Das I ist jetzt öffentlich hier, d.h., ich kann auch außerhalb von Instanzen einfach unter Angabe des Klassennamens auf diese Variable zugreifen. Das würde ich allerdings so nicht empfehlen: Felder vor Klassen sollten eigentlich immer privat sein. Aber um jetzt einfach nur einmal die Wirkung und die Anwendungsweise von diesem Static-Schlüsselwort zu zeigen, gebe ich einfach einmal dieses Beispiel. Sie sehen: Ich kann direkt über den Klassennamen auf dieses Element zugreifen. Häufiger als bei Variablen wird ein öffentliches statisches Element bei Methoden oder Properties verwendet. Man erhält hier z.B. die Möglichkeit diese statische Variable I jetzt in einem statischen Property zu kapseln. Das sähe dann so aus. Dann müsste ich hier beim Zugriff das großgeschriebene I verwenden und auch hier für das Ausgeben. Dann entspräche es eher der gängigen Praxis. Dass man Felder privat hält und diese Felder gekapselt hält. So ähnlich kann ich es jetzt mit Methoden machen, also Public Static Bar. Da muss ich natürlich noch einen Rückgabewert angeben. Der soll Void sein. Die Methode tut irgendwas. Was jetzt nicht geht, das ist, dass ich ein Objekt nehme und von diesem  Objekt aus dieses Bar aufrufe. Ganz einfach, weil diese Methode Bar keine Instanzmethode ist also nicht den Objekten zugeordnet ist -, sondern weil es eine statische Methode ist und der Klasse zugeordnet ist. Was macht man? Man schreibt den Klassennamen hin und dann den Punkt: Dann ist diese Methode Bar zugreifbar, und dann kann ich sie auch aufrufen. Entsprechend ist es so machen wir den ganzen Code hier mal wieder weg, machen wir mal eine Instanzvariable. Diese Variable kann nicht in einer statischen Methode verwendet werden. Warum? Weil eine Instanzvariable der Instanz gehört. Hier habe ich aber keine Instanz vorliegen. Was ich jetzt durchaus machen könnte: Ich könnte eine Instanz anlegen, und dann könnte ich diese Variable verwenden von der Instanz. Das ist möglich, aber ich könnte sie nicht direkt verwenden, anders herum aber geht es schon: Wenn ich hier eine statische Variable und eine Instanzmethode habe, dann kann ich hier schon I++ schreiben. Nun ist es so: Es hat sich bei C# eingebürgert, nämlich dass man bei der Verwendung von Variablen, also von Mitgliedsvariablen von Klassen immer dieses vis. davorschreibt, wenn es eine Instanzvariable ist. Ich zeige das noch einmal mit einer nicht-statischen Variable: Man würde hier vis.j schreiben um dem Leser des Codes klarzumachen, dass es sich um eine Mitgliedsvariable, also um ein Feld der Klasse handelt. Die Begriffe Feld und Mitgliedsvariable, das ist praktisch äquivalent. Entsprechend, wenn ich jetzt eine Instanz anlege, dann würde ich ja auch von dieser Instanz hier die Variable aufrufen. Also nur durch dieses voranstellen von C., komme ich überhaupt an dieses J von der Instanz. Und genau die gleiche Schreibweise übernehme ich hier mit diesem vis.. Und entsprechend, wenn ich also eine statische Variable verwende, dann schreibe ich dieses C1. davor. Selbst, obwohl es vom Compiler her nicht nötig ist, ist der Code wesentlich besser lesbar, weil man sofort sieht, schon anhand der anderen Farbe hier vorne dran, dass C1 ein Klassenname ist, also muss I eine statische Mitgliedsvariable sein. Während hier, das ist eine Instanzen-Mitgliedsvariable. Wenn ich jetzt hier eine lokale Variable habe und jetzt auf diese lokale Variable zugreife, dann setze ich nichts davor. Das wäre auch der einzige Fall, in dem das passiert, also entweder hier bei lokalen Variablen oder bei Parametern. z.B. so. Dann wissen wir einfach: Diese Variable und diese Variable sind im lokalen Kontext und alle anderen reichen über den lokalen Kontext hinaus und haben deswegen so ein Präfix. Das wäre es soweit zu dem, was ich über statische versus Instanzfelder und -methoden zu sagen hätte. Nebenbei haben Sie noch ein bisschen etwas über die Gepflogenheiten in C# gelernt, wie man Variablen von verschiedenen Typen, also als Mitgliedsvariablen oder als Parameter im Code schreibt, sodass der Code besser lesbar ist.

Visual C# 2012 Grundkurs

Schreiben Sie eigene Programme in C# und lernen Sie dazu alle Schlüsselwörter und die meisten Konstrukte kennen, um sicher mit dieser Programmierspreche umzugehen.

7 Std. 1 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!