Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Visual C# 2012 Grundkurs

Properties

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Properties ermöglichen es, in C# bestimmte Statusinformationen von einem Objekt auszulesen sowie einem Objekt gewünschte Informationen zuzuweisen.

Transkript

In diesem Abschnitt wollen wir uns einem weiteren Member von Klassen widmen, den sog. Properties. Manchmal möchte man den Status eines Objekts, also die Sammlung all dieser Werte, die in diesen Members drinnen steckt, in diesen Fields drinnen steckt, das wird auch "Status von Objekten" bezeichnet. Und so ein Objekt ist so eine Black Box. Manchmal möchte man von diesem Status bestimmte Informationen abgreifen. Und manchmal möchte man auch bestimmte Informationen in ein Objekt injizieren. Dafür sind diese Properties da. Wie wird dann Property definiert? Ein Property hat erstmal einen Namen. In dem Fall ist der Name "Name". Und dann hat dieses Property einen Getter und einen Setter. Und beides sind praktisch so eine Art Methoden. Die eine wird eben verwendet, um den Wert auszulesen, und das andere wird verwendet, um den Property-Wert zu setzen. Jetzt können wir irgendetwas machen, in diesen Gettern und Settern. Bei "Name" würde es eigentlich nur Sinn machen, jetzt einen Getter zu schreiben, ich kann also diesen Setter weglassen. Und jetzt schreibe ich z.B. so etwas wie "return first name+Leerzeichen+last name". Und weil ja "FirstName" und "LastName" Members sind, also Fleets der Klasse, schreibe ich ein "this" voran, dann sieht das Ganze sauber aus. Das sollte man sich überhaupt angewöhnen, bei Fleets immer dieses "this" davor zu schreiben, dann ist es beim Durchlesen vom Code klarer, woher dieses Symbol "FirstName" oder "LastName" kommt. Und jetzt kann ich also hier z.B. in der Main-Methode, also wenn ich jetzt diese Print-Funktionalität aus meiner Klasse heraushalten möchte und das glaube ich, das wäre eine gute Idee, dann könnte ich also so etwas machen, dass ich sage: "Liebe Konsole, schreibe mir den Namen des Mitarbeiters raus." Und wenn ich jetzt das Ganze kompiliere und starte, habe ich den Namen auf der Konsole. Das ist ein Property mit einem Getter. In diesem "Property" steckt ein bisschen Logik drin: Es gibt mir einen Auszug aus dem Status eines Objekts. Aber manchmal ist es so, dass man auch einfach nur Variablen mit einem Property einhüllen möchte. Das machen wir jetzt mal. Ich gehe hier mal her und ändere das gerade ab: "returnthis.first name". Was passiert nun hier? Der Getter ist relativ schnell erklärt: Ich gebe den Wert zurück, der in "FirstName" drin steht. Beim Setter ist es so, ich weise dem "FirstName" einen Wert zu. Und das haben wir jetzt vorhin gar nicht so großartig heran genommen: Jedes Property hat ja einen Typ. Im Fall von Getter wird etwas von diesem Typ zurückgegeben. In dem Fall ist es der Typ String, es wird also etwas zurückgegeben, was ein String ist. In dem Fall vom Setter erwarten wir etwas von diesem Datentyp. In dem Fall ist es auch ein String, den ich diesem "FirstName" zuweisen möchte. Das Besondere bei diesen Setter ist, dass wir so einen speziellen Namen haben: Dieser Name heißt "Value". Innerhalb eines Setters bedeutet Schlüsselwort "Value", dass ist der Wert des Properties, das ist das, was von Außen herein gereicht wurde. Jetzt habe ich also hier ein Property geschrieben und jetzt ist es so: Wenn wir wissen, dass wir diese Variablen im Code gar nicht so großartig benutzen, sondern wir wollen einfach nur Properties haben, dann gäbe es theoretisch eine kürzere Schreibweise für das Ganze. Dies führe ich nun anhand des "LastName" vor: und zwar "publicstring lastname". Nun gibt es hier eine bestimmte Kurzschreibweise. Der Compiler produziert mir aus diesem  Konstrukt hier im Grunde genommen so etwas. Der macht mir das nur automatisch. Und damit hab ich ein Property, das eben auf dieselbe Art und Weise funktioniert. Aber zu weit will ich im Augenblick nicht gehen, weil es fällt mir in dem Augenblick noch ein bisschen schwer zu erklären, wozu man solche Kurzschreibweisen-Properties gebrauchen kann. Also möchte ich jetzt weiter hier meinen "LastName" haben. Es gibt auch manchmal solche Tools, die stellen so Wrapper selber her. So ein Tool habe ich jetzt gerade für den "LastName" aufgerufen. Das hat mir jetzt so ein kurz und bündiges Wrapper-Property geschrieben. Da sieht man, weil eben diese Getter und Setter so kurz sind, werden sie auf eine Zeile zusammengedampft. Das wäre so, wie wenn ich hier auch die Luft rauslasse, dann sieht es hier so ähnlich aus. Das ist also eine sehr übliche Schreibweise für solche Wrapper-Properties. Dann sieht derjenige, der den Code liest, gleich auf einen Blick, dass sich in diesen Properties nicht irgendwie eine besondere Logik verbirgt. Jetzt gibt es noch eins zu sagen: Es kann ja jetzt der berechtigte Einwand kommen, dass einer sagt: "Was für ein Quatsch. Warum gehen die nicht her und machen eine Public-Variable 'Public String First Name', und damit hat sich der Fall?" Die kann jetzt von außen genauso gesettet werden wie hier. Von der Funktionalität her hat es eigentlich die gleiche Bedeutung. Aber es gibt einige gute Gründe, warum man trotzdem diese Wrapper-Variante verwenden sollte. Einen Grund kann ich wenigstens nennen. Ich lege jetzt hier mal so ein Mitarbeiter-Objekt an, und ich schaue mal gerade... Ich mache jetzt hier so ein "Console.writeline: N.FirstName + + N.LastName". Also ich gebe die Namen nochmal auf der Konsole aus. Und jetzt haben wir hier so eine ganz komplexe Anwendung, die wird von mehreren Leuten geschrieben, und es verteilt sich über bestimmte Assemblies usw. Irgendein Mensch überschreibt jetzt hier den "LastName". Damit ist jetzt diese ganze Ausgabe hier verändert. Ich zeige das jetzt gleich mal, also, aus Mirko Matitschek wird Mirko Müller plötzlich heißt er Müller. Wie kann das sein? An welcher Stelle wurde das geändert? Wenn Sie hier jetzt ein öffentliches Feld verwendet hätten, hätten Sie keine Chance heraus zu bekommen, wer dieses Feld setzt. Dadurch aber, dass ich ein Property gemacht habe, kann ich jetzt sagen: OK, hier verändert einer den "LastName". Jetzt kann ich einen sog. Breakpoint setzen. Dieser Breakpoint hält mir jetzt an, sobald dieser Wert geändert wird. OK, das machen wir jetzt einmal. Wir starten das Programm mit F5 diesmal. Jetzt bin ich schon das erste Mal in diesem Setter drinnen und wenn Visual Studio an so einem Breakpoint anhält, dann zeigt hier ein paar Informationen an u.a. in "CallStack". Der CallStack ist etwas Wunderbares: Es zeigt uns hier mit diesem Pfeil an, wo wir sind. Wir sind nun im "LastName Property" und zwar in dem Set-Teil. Und darunter sehe ich, wer diesen Setter aufgerufen hat. Und das will ich natürlich sehen. Ich mache da einen Doppelklick darauf und siehe da, bin genau an der Stelle, wo irgendein Idiot sozusagen den Status meines Objekts geändert hat. Diese Möglichkeit, herauszufinden, wer mein Objekt verändert hat, ist bereits Grund genug, zu sagen: Ich halte alle meine Variablen privat und mache, wenn ich Zugriff darauf brauche, Properties. Dann kann ich immer sehen, wer etwas an einer Klasse ändert. OK, das war es mit diesem Abschnitt. In diesem Abschnitt habe ich gezeigt, wie Sie Properties anlegen und einen ersten Eindruck davon verschafft, wofür Properties gut sind.

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)
Tiefflieger
Markus W.

Herr Matytschak ist eine tieffliegende verstrahlte Heissdüse. Die Stimme ist super angenehm, man hat das Gefühl, er sitzt neben einem am Tisch und erklärt. Wenn man das Training durchgearbeitet hat, kann man gar nicht anders, dann muss man C# programmieren. Allerdings muss man auch einige Passagen 1x oder auch öfter anhören, weil er während des Trainings keine Gefangenen macht. Herr Matytschak spricht nicht nur über C#, er ist C#!!! Großes Lob, tolles Training. Beim nächsten Mal vielleicht einen Tick langsamer. Vielen Dank!!!

 

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!