Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

hallo alle,

ich habe bisher vornehmlich mit java gearbeitet und versuche nun mich mit vb.net anzufreunden. kann mir bitte jemand den sinn des property-konstrukts erklären, oder anders: wo ist hier der unterschied zwischen a und b?


    Private _a As Integer


    Public Property a() As Integer

        Get

            Return _a

        End Get

        Set(ByVal Value As Integer)

            _a = Value

        End Set

    End Property

und

    Private _b As Integer


    Public  get_b() As Integer

            Return _b

    End get_b


    Public set_b(ByVal value As Integer)

            _b = value

    End set_b

gruß

ich

Ich kenn mich mit der VB Syntax nicht aus deswegen bin ich mir nicht sicher ob das erste so richtig ist. Wenn es aber so stimmt dann hast du beim ersten getter und setter für a und beim zweiten einfach nur Funktionen um b zu setzten bzw. zurückzugeben. Also Pseudo getter/setter wie in Java.

Beim ersten schreibst du dann zum Beispiel

Instanz.a = 5;

und beim zweiten

Instanz.set_b(5);

naja,

ich bin mir nicht sicher, ob man wirklich in getter / setter und pseudo-getter / -setter differenzieren kann? der compiler macht doch aus beidem das gleiche, oder gibt es da einen unterschied?

die unterschiedliche schreibweise beim aufruf ist klar. aber ich frage mich, ob die schreibweise die einführung eines neuen programmier-konstruktes (erhöhung der komplexität) rechtfertigt?

die lesbarkeit ist natürlich sehr von der gewöhnung abhängig. mich irritiert das mit den properties im moment mehr. auch das mit den modifikatoren löse ich dadurch, dass ich den entsprechenden modifikator einfach weg lasse. dann wird er mir über intellisense auch nicht angeboten.

worauf ich hinaus will: ich finde es intuitiv, dass ich eine variable habe, die ich über eine funktion schreiben oder lesen kann. punkt - aus - fertig. das ist einfach und von geringer komplexität.

mich irritiert, dass diese funktionen in vb in ein property-konstrukt verpackt werden. das erhöht aus meiner sicht die komplexität ohne (einen für mich) erkennbaren mehrwert.

macht der compiler etwas anderes daraus?

gruß

ich

die unterschiedliche schreibweise beim aufruf ist klar. aber ich frage mich, ob die schreibweise die einführung eines neuen programmier-konstruktes (erhöhung der komplexität) rechtfertigt?
Neu für wen? Properties gab's in VB schon immer, wenn auch nicht für eigenen Code. Getter und Setter sind in anderen Sprachen nicht so allgegenwärtig wie in Java, wo öffentliche Instanzvariablen mehr oder weniger verteufelt werden.

Du kannst natürlich VB.NET so wie Java benutzen, es zwingt dich ja niemand, Properties zu verwenden.

worauf ich hinaus will: ich finde es intuitiv, dass ich eine variable habe, die ich über eine funktion schreiben oder lesen kann. punkt - aus - fertig. das ist einfach und von geringer komplexität.
Ich habe bei Java gelegentlich den Eindruck, dass reflexartig für jede private Instanzvariable Getter und Setter bereitgestellt werden, ohne über den Nutzen nachzudenken. Hinterher ist dann die öffentliche Schnittstelle einer Klasse ein ziemlich exaktes Abbild der internen Struktur. Aber das ist auch nur mein C++-geprägter Eindruck von Java. In anderen Sprachen macht man eben manche Dinge anders. Darüber, ob das besser oder schlechter ist, sollte man erst dann urteilen, wenn man beide Sprachen gut kennt.

mich irritiert, dass diese funktionen in vb in ein property-konstrukt verpackt werden. das erhöht aus meiner sicht die komplexität ohne (einen für mich) erkennbaren mehrwert.
Ich bin ziemlich sicher, dass das in deiner Java-geprägten Sichtweise begründet liegt.

macht der compiler etwas anderes daraus?
Nein.
Neu für wen? Properties gab's in VB schon immer, wenn auch nicht für eigenen Code. Getter und Setter sind in anderen Sprachen nicht so allgegenwärtig wie in Java, wo öffentliche Instanzvariablen mehr oder weniger verteufelt werden.

ja, das stimmt. neu gilt in diesem fall für mich. aber mit dem teufel habe ich es eigentlich nicht so...

Du kannst natürlich VB.NET so wie Java benutzen, es zwingt dich ja niemand, Properties zu verwenden.

meine frage war, ob es unabhängig von der für mich ungewohnten schreibweise einen mehrwert (z.b. besondere funktionalitäten für properties) durch das property-konstrukt gibt, den ich einfach nicht erkannt / übersehen habe?

gruß

ich

Also ich kenne Properties noch aus der C++Builder Zeit (in Delphi/Kylix war es genauso). Dort waren properties spezielle getter/setter Methoden, die die Eigenschaft besaßen, dass diese im Properties Editor der Entwicklungsumgebung auftauchten.

Also z.B. hatte ein Butten die Properties Text, Color etc. die per Mausklick geändert werden konnte und sich dann auch sofort im Design wiederspiegelten.

Evtl. ist das bei vb.net ähnlich.

Dim

meine frage war, ob es unabhängig von der für mich ungewohnten schreibweise einen mehrwert (z.b. besondere funktionalitäten für properties) durch das property-konstrukt gibt, den ich einfach nicht erkannt / übersehen habe?
Gegenüber Getter/Setter haben Properties den Vorteil, dass sie immer direkt beieinander stehen, und dass sie die in VB gewohnte Zugriffssyntax bieten. Gegenüber öffentlichen Instanzvariablen haben sie den Vorteil der Kapselung und der Möglichkeit der Validierung.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.