Sichtbarkeit von Membern einer Klasse

  • VB.NET

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

    Sichtbarkeit von Membern einer Klasse

    Hallo,

    Ich habe eine Frage zur Objektorientierter Programmierung, bzw. der Sichtbarkeit
    von Membern einer Klasse:

    Quellcode

    1. Public Class Anfang
    2. Private ListeEins as new List (of String)
    3. Public Shared Sub ListeErweitern ()
    4. ListeEins.Add("Hallo")
    5. ListeEins.Add("Hello")
    6. End Sub
    7. End Class
    8. Public Class Startseite
    9. Private Sub btn2_Click(sender As Object, e As EventArgs) Handles btnk2.Click
    10. Anfang.ListeErweitern()
    11. End Sub
    12. End Class


    Wieso bekomm ich hier immer eine Fehlermeldung, dass ich in der ListeErweitern Sub auf die Liste nicht zugreifen kann?
    "Auf einen Instanzmember einer Klasse kann nicht ohne explizite Klasse von einer/m freigegebenen Methode/Member verwiesen werden"
    Als ich mich versucht habe in Objektorientierte Programmierung einzulesen, las ich,
    dass ich durch "Private" nur noch innerhalb der Klasse zugriff auf das entsprechende
    Element habe. Da aber ListeEins als auch ListeErweitern() in der selben Klasse "Anfang" sich befinden
    müsste ich eigentlich in ListeErweitern doch auf ListeEins zugreifen können?

    Danke
    @timmi31061 Das hat mit Shared nix zu tun.

    KristallBaum schrieb:

    nicht zugreifen kann?
    Weil sie Private deklariert ist.
    Wenn Du sie sehen willst, musst Du sie Internal oder Public deklarieren:

    VB.NET-Quellcode

    1. Public ListeEins As New List (Of String)
    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!
    Quatsch, timmi31061 hat Recht. ListeEins ist eine ganz normale Variable der Klasse, die man über eine Objektinstanz ansprechen kann oder aus der Instanz selbst heraus.
    Die Methode ListeErweitern ist jedoch als shared deklariert, also ist es eine statische Methode, die nur andere statische Member der Klasse kennt.

    Counterbug schrieb:

    Quatsch
    Jou, Ihr habt Recht.
    Ich hab mich von der anderen Klasse verwirren lassen. :whistling:

    VB.NET-Quellcode

    1. Private Shared ListeEins As New List (Of String)
    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!