Unterschied zwischen Property und Variable

  • VB.NET

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

    Unterschied zwischen Property und Variable

    Hallo ich definiere einmal eine Property und eine Variable öffentlich, auf beide kann ich von einer anderen klasse aus zugreifen und die variable ist wesentlich einfacher

    VB.NET-Quellcode

    1. Dim reifen As Integer
    2. Public Property reifenanzahl As Integer
    3. Set(value As Integer)
    4. reifen = value
    5. End Set
    6. Get
    7. Return reifen
    8. End Get
    9. End Property
    10. 'hier einmal eine ähnliche definition aber mit einer variable
    11. Public Reifenanzahlvariable as integer = 8



    Der Zugriff ist bei der VAriable einfacher weil ich nur einen schritt brauche, nicht zwei wie bei der Property

    VB.NET-Quellcode

    1. audi.reifenanzahl = 8
    2. MsgBox(audi.reifenanzahl)
    3. MsgBox(audi.Reifenanzahlvariable)


    Wieso wird trotzdem so auf Property plädiert?
    Weil man Properties z.B. über BindingSources an CEs wie ne ComboBox binden kann (klappt mit "normalen" Variablen nicht). Und weil man mehr als nur z.B. den Zuweisungscode bei Set ausführen lassen kann, z.B. kann man das PropertyChangedEvent feuern, welches das GUI über Änderungen informiert. Oder man kann Wertprüfungen durchführen, um Änderungen abzulehnen. Oder, oder, oder ...

    ##########

    Man kann auch z.B. den Getter Public und den Setter Private machen. Dann kann man von außen nur lesend auf die Property zugreifen aber innerhalb der Klasse auch schreibend.
    Was meinst Du mit

    Visual_Prog schrieb:

    Der Zugriff ist bei der VAriable einfacher weil ich nur einen schritt brauche, nicht zwei wie bei der Property
    Denn man kann ja eben schreiben:

    VB.NET-Quellcode

    1. audi.reifenanzahl = 4
    2. MessageBox.Show(audi.reifenanzahl.ToString)
    So wie bei der normalen Variable auch. Wo braucht man da n 2. Schritt?

    Dass man die Property auch vereinfachen kann zu dem hier, weißt Du?

    VB.NET-Quellcode

    1. Public Property reifenanzahl As Integer

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

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

    Visual_Prog schrieb:

    Wieso wird trotzdem so auf Property plädiert?
    Pauschal-Plädierern würde ich auch gleich widersprechen.
    Wenn man eine Property braucht, soll man eine Property nehmen, sonst nicht.
    Wurde schon gesagt: Databinding ist zB ein guter Grund, eine Property zu nehmen.
    Auch kann man in Getter/Setter immer bischen Logik unterbringen - wie gesagt: Wenn man das braucht, soll man das machen.

    Es gibt auch Gründe, eine Property nicht zu nehmen: Vielleicht will man ja bewusst Databinding ausschliessen.
    Oder bei der Entwicklung von Controls ists manchmal echt lästig, was der Form-Designer sich einfallen lässt, an Code zu generieren, wenn er eine Property entdeckt.

    Oder aber es ist einfach egal.
    Der Geschwindigkeits-Vorteil einer Variable ist jedenfalls wirklich nicht der Rede wert.

    Ah - was bei Property auch interessant sein kann ist die Möglichkeit, sie Public Readonly zu designen, innerhalb der Klasse aber beschreibbar.
    @Visual_Prog Es gibt da das Control PropertyGrid, mit dem kannst Du die Properties, nicht aber Variablen, einer Klasseninstanz editieren:
    docs.microsoft.com/de-de/dotne…rid?view=netframework-4.8
    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!