Properties με παραμέτρους. Ε;!
Τις προάλλες με ρώτησε ένας μαθητής μου γιατί όταν γράφουμε ένα property, πχ
Public Property MyProperty As Integer
μόλις πατήσουμε το enter παράγται το
Public Property MyProperty() As Integer
Get
End Get
Set(ByVal value As Integer)
End Set
End Property
Που είναι το περίεργο; Οι παρενθέσεις μετά το MyProperty. Τι χρειάζονται;
Λοιπόν, μέσα σε αυτές τις παρενθέσεις μπορούμε να δηλώσουμε μια παράμετρο. Πχ
Public Property MyProperty(ByVal Param As Integer) As Integer
Get
End Get
Set(ByVal value As Integer)
End Set
End Property
Αυτή τη παράμετρο μπορούμε να τη χρησιμοποιήσουμε κανονικά μέσα στον κώδικα του Get/Set, πχ:
MyClass.MyProperty(5) = 3
όπου μέσα στο Set θα έχουμε value=3, Param=5. Ωραίο ε?!
Το θέμα είναι ότι όσο ωραίο κι αν είναι,δεν θα πρέπει να το χρησιμοποιείτε. Είναι ένα feature της VB.NET το οποίο δεν έχει όμως η C# (πράγμα που σημαίνει ότι για να χρησιμοποιήθει η κλάση μέσα από C# θα πρέπει να καταφύγει ο developer στο reflection - λέγεμε και work re-assurance) και ο λόγος που υπάρχει είναι για να διευκολύνεται ο προγραμματισμός με COM.
Happy coding!