Readonly Property in Sub ändern

  • VB.NET

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

    Readonly Property in Sub ändern

    Moin,

    in meinen Klassen verwende ich vermehrt ReadOnly Eigenschaften, da ich dem Objekt nur beim Erstellen einen Wert zuweisen möchte und dieser nicht änderbar sein soll.

    Jetzt benötige ich allerdings eine ReadOnly Eigenschaft, die ich nach dem Erstellen des Objektes durch Aufrufen eines Private Subs im Objekt ändere.

    Im Sub New können ReadOnly Werte ja beliebig geändert werden, aber eben nicht in Subs.

    VB.NET-Quellcode

    1. ​Public Class Status
    2. Public ReadOnly Property ID As Integer = 0
    3. Public ReadOnly Property Text As String = ""
    4. Sub New()
    5. End Sub
    6. Sub New(ByVal ID_ As Integer)
    7. ID = ID_
    8. End Sub
    9. Private Sub SetName()
    10. Select Case ID
    11. Case 0
    12. Text = "Ohne"
    13. Case 1
    14. Text = "Lieferbar"
    15. Case 2
    16. Text = "Bestellt"
    17. Case 3
    18. Text = "Nicht mehr verfügbar"
    19. Case Else
    20. Text = ""
    21. End Select
    22. End Sub
    23. End Class
    24. Public Class Status
    25. Public ReadOnly Property ID As Integer = 0
    26. Public ReadOnly Property Text As String = ""
    27. Sub New()
    28. End Sub
    29. Sub New(ByVal ID_ As Integer)
    30. ID = ID_
    31. End Sub
    32. Private Sub SetName()
    33. Select Case ID
    34. Case 0
    35. Text = "Ohne"
    36. Case 1
    37. Text = "Lieferbar"
    38. Case 2
    39. Text = "Bestellt"
    40. Case 3
    41. Text = "Nicht mehr verfügbar"
    42. Case Else
    43. Text = ""
    44. End Select
    45. End Sub
    46. End Class

    Dies wäre eine Beispielklasse.
    Bei SetName knallt es, da Text ReadOnly ist.
    Gibt es eine Möglichkeit, dass man innerhalb einer Klasse die Klasseneigenschaften trotz ReadOnly ändern kann?
    Grüße :)
    Jap. Leider mit mehr Schreibarbeit:

    VB.NET-Quellcode

    1. Private _Text As String
    2. Public Property Text As String
    3. Get
    4. Return Text
    5. End Get
    6. Private Set(NewValue As String)
    7. _Text = NewValue
    8. End Set
    9. End Property
    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.
    @BlueLagoonX Außerdem kannst Du ReadOnly-Properties auch im Konstruktor der Klasse ändern.
    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!
    Geht im Grunde in jeder Prozedur da bei automatisch generierten Eigenschaften immer ein Field mit dem Präfix "_" erzeugt wird.

    VB.NET-Quellcode

    1. Public ReadOnly Property Test As String = ""
    2. Public Sub ChangeTest(newValue As String)
    3. _Test = newValue
    4. End Sub


    Aber dennoch ist sowas nicht die "feine Englische Art".

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##