Variablen der Mainklasse von anderen Klassen aus verändern

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Aichi.

    Variablen der Mainklasse von anderen Klassen aus verändern

    Moin,
    ich hänge mal wieder beim Programmieren fest.
    Ich bekomme es nicht hin, von einer Nebenklasse aus
    die Variablen der Mainklasse zu verändern. Hier mein Code:

    VB.NET-Quellcode

    1. ' Mainklasse
    2. dim x as integer = 1337
    3. dim a as new ka


    VB.NET-Quellcode

    1. ' Klasse ka
    2. Public Class ka
    3. Sub XD(byval variable as integer)
    4. variable = 99
    5. end sub
    6. end class


    VB.NET-Quellcode

    1. ' Mainklasse
    2. a.XD(x)
    3. msgbox(x)
    4. ' x ist 1337 :/


    Ist es auf diese Weise wirklich nicht möglich,
    oder stört ein Widerspruch im Code den Vorgang?
    MfG
    Widerspruch:

    VB.NET-Quellcode

    1. Sub XD(byval variable as integer)

    Diese Sub ist nicht als Public gekennzeichnet, und deshalb ausserhalb der Klasse nicht sichtbar.

    Außerdem ist es ziemlich sinnlos, der Sub eine Variable mitzugeben, wenn du sie in der nächste Zeile auf 99 setzt.
    Danke erstmal für die schnelle Antwort.
    Dieser Code findet sich in meinem Game natürlich nicht wieder.
    In meiner Nebenklasse befindet sich unter anderem eine
    Kollisionsprüfung. Wenn die Kollision zutrifft,
    sollen einige Variablen aus der Mainklasse einen
    neuen Wert bekommen.

    der_Kurt schrieb:

    Diese Sub ist nicht als Public gekennzeichnet, und deshalb ausserhalb der Klasse nicht sichtbar.
    Public Sub XD(byval variable as integer) tuts auch nicht. :/
    stell mal den ganzen Quellcode zur Verfügung
    meinetwegen kannst du auch den Inneren Quelltext der Function usw löschen aber lass die Functions und Subs wie sie sind
    dann wissen wir vielcht besser zu helfen
    dein Code sieht nach "mal eben getippt" aus und könnte ja durch aus Fehler beinhalten

    nächste Frage wie versuchst du drauf zuzugreifen ?
    sei froh dass ich XNA installiert hab ... sonst hätt ich die ganzen XNA-Fehler :D
    auf jeden Fall alles als Public ... auch den Sub New
    außerdem

    VB.NET-Quellcode

    1. (ByVal spritebatch As SpriteBatch, ByVal pos As Vector2, ByVal hp As Integer, ByVal sonne As Texture2D)

    das sind ja deine Parameter
    ich bin mir nicht sicher aber ich denke nicht dass du bei einem Spritebatch dass als ByVal übergeben wird damit zeichnen kannst
    probier mal mit ByRef
    auf jeden Fall alles als Public ... auch den Sub New
    Inwiefern alles? :D Würd mich freuen, wenn du so nett wärst und den Code anpassen könntest. :rolleyes:
    das sind ja deine Parameter
    ich bin mir nicht sicher aber ich denke nicht dass du bei einem Spritebatch dass als ByVal übergeben wird damit zeichnen kannst
    probier mal mit ByRef
    Hast Recht, ByRef wäre angebrachter. :)

    MfG
    naja statt

    VB.NET-Quellcode

    1. Sub New(...)
    2. Public Sub New(...)
    klar geht das
    aber schreib mal statt

    VB.NET-Quellcode

    1. Public Class KotzmichwechweilichkeinNamenhab
    2. ...
    3. End Class

    VB.NET-Quellcode

    1. Public Module Ichschreibmalwaskürzeres
    2. ...
    3. End Module
    stimmt man kann die ja auch als Public Shared Function nennen