Wofür Get - Set Properties?

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Property = Eigenschaft.

    Damit Du auf der instanzierten Klasse(bzw. Objekt) direkt per Objekt.PROPERTY zugreifen kannst.

    Diese Properties geben allerdings auch nur globale Variablen zurück(GET) oder setzen sie(SET)

    Beispiel:

    VB.NET-Quellcode

    1. Public Class TestButton : Inherits Button
    2. Private Texto As String = String.Empty
    3. <Browsable(True), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
    4. Public Overrides Property Text() As String
    5. Get
    6. Return Texto
    7. End Get
    8. Set(value As String)
    9. If Texto = value Then Return
    10. Texto = value
    11. Me.Invalidate()
    12. End Set
    13. End Property




    So kann man ganz einfach per Object.Text den String setzen und mit der selben
    Eigenschaft auch den Text erhalten.
    Variabeln bzw. in diesem Fall Felder sind aller höchstens Protected sprich aus einer abgeleiteten Klasse sichtbar. Du solltest niemals Felder als Public Deklarieren, da damit die Kontroller über Werte verlierst(eine Ausnahme sind hier Konstanten und somit auch teilweise readonly markierte Felder).
    Mit Properties kannst du den Zugriff auf Werte steuern. Du kannst z.B. bei einem Getter noch eine Berechnung durchführen, eine Datenbank Abfrage machen usw. Das kannst du bei einer Variable nicht. Auch kannst du z.B. den Setter Privat machen, sodass von außen kein Wert gesetzt werden kann. Kurzum Properties sind Felder³ wobei dies nicht ganz richtig ist, da diese auch einen einfachen Methodenaufruf abkapseln können usw.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Nimm Controls. Da brauchst du Properties, wenn du im Eigenschaftsfenster Werte ändern willst. Zudem braucht man diese auch bei manchen Patterns, z. B. Singleton.
    Es ist einfach OOP und in gewissen Zusammenhängen muss man auf Properties zugreifen, da nicht alles mit Variablen geht.
    Du hast mehr Möglichkeiten. Kannst auch von anderen Klassen drauf zugreifen etc.
    Auch von anderen Subs aus.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Vollzitat eines Vorposts an dieser Stelle durch Username ersetzt ~VaporiZed
    @ RushDen:
    Immer, wenn von außen auf deine Klasse zugegriffen wird. Du kannst dann direkt angeben, ob readonly, read-and-write, writeonly und du kannst bestimmen, was in der Klasse geändert wird, wenn diese Variable geändert wird.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    RushDen schrieb:

    Immer?
    Auf jeden Fall immer öfter.
    Solch geniale methoden wie

    C-Quellcode

    1. { get; private set; }
    sind absolut hilfreich, wenn Variablen geschützt sein müssen oder wenn im Setter eine Aktion durchgeführt werden muss.
    Beim Editieren werden Properties von der IDE angeboten.
    Und es gibt einen Property-Inspector, mit dem Du die Properties designermäßig bearbeiten kannst.
    Solch geht mit schnöden Variablen nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RushDen schrieb:

    designermässig bearbeiten?
    So:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!