Klassen und Strukturen

  • VB.NET

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

    Klassen und Strukturen

    Hallo,

    Gibt es eine Möglichkeit, eine Variable, mit einer eigenen Struktur außerhalb seiner Klasse zu verwenden?
    Bzw. Werte daraus zu lesen? Ich bekomme leider immer den Fehler, dass die Variable außerhalb der Klasse nicht verfügbar gemacht werden kann.

    Ich hoffe, einer von euch weiß Rat.


    Liebe Grüße,

    Arkantos

    ~Arkantos~ schrieb:

    bt es eine Möglichkeit, eine Variable, mit einer eigenen Struktur außerhalb seiner Klasse zu verwenden?

    Was verstehst Du unter 'einer Variable mit einer eigenen Struktur' ? Evtl ein Structure ?

    Member die im Klassenkopf deklariert werden können mit Public und/oder Friend nach aussen sichtbar gemacht werden. -> Klassendesign: Sichtbarkeit einer Klasse

    Falls Du wirklich Strukturen meinst: nimm lieber Klassen, da Strukturen als Zwitter von Werte- und Referenztyp manchmal eigenartige und schwer zu findende Fehler verursachen.

    Mach doch mal ein Beispiel was Du beabsichtigst ...
    Ich hab in einem Modul eine "public"-Structure definiert. Diese benutze ich auch in der Klasse. Kann sie von dem Modul, in dem die Struktur definiert ist, aber leider nicht mehr "auslesen"
    nun hab ich sie in der Klasse selbst definiert, und übergebe sie in anderen Modulen eben als "Objekt"
    In wieweit das "sauber" ist, weiß ich nicht. Aber eine andere Möglichkeit seh/hab ich leider nicht.

    Ich danke dir, für deine Hilfe und deinen Link.


    Liebe Grüße,

    Arkantos
    Was soll jetzt in diesem Beispiel nicht gehen ?

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private myStruc As Dudu ' kann auch hier verwendet werden
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. OberDudu.Name = "Hello World"
    5. ' oder
    6. Test.OberDudu.Name = "Hello World"
    7. ' und
    8. myStruc.Name = "Hello World"
    9. End Sub
    10. End Class
    11. ' Member von Modules sind Shared & Global, d.h. man kann sie sogar ohne Klassennamen verwenden
    12. Module Test
    13. Public Structure Dudu
    14. Public Name As String
    15. End Structure
    16. ' Member
    17. Public OberDudu As Dudu
    18. End Module
    Ich würde die Verwendung von Modulen lediglich noch für Befehlserweiterungen gelten lassen.
    Ansonsten sind Module ein Relikt aus der grauen Vorzeit.
    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!
    Entschuldigung für die späte Antwort - hatte vorher leider keine Zeit.
    Das Problem war einfach, dass ich eine Struktur in einem Modul erstellt hatte, in der Klasse dann eine Variable erstellt hatte.
    Auf diese hatte ich keinen Zugriff, aus dem Modul mehr.

    Nun ist die Struktur dort, wo sie hingehört. In der klasse.
    Ich würde die Verwendung von Modulen lediglich noch für Befehlserweiterungen gelten lassen.

    Ich Ruf aus der Klasse, die in einem Thread läuft einige Sachen aus Modulen auf. Meinst du, das ist nicht so gut?
    Oder hab ich einen Geschwindigkeitsverlust dadurch? In diesem Falle kommt's mir auf jede Nanosekunde an.

    Ansonsten klappt alles - vielen Dank, für die Hilfe.

    Liebe Grüße,

    Arkantos
    Nein. Module sind ein Rudiment aus einer ganz grauen Vorzeit.
    Wenn Du den Code optimieren musst, solltest Du den gefährlichen Teil möglichst innerhalb einer einzigen Klasse abhandeln.
    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!
    Das kann ich in dem Falle schlecht.
    In einer "Select Case" wird entschieden, welche Sub eines Moduls nun ausgeführt werden soll.
    Ich glaube, dass ich dies so eben schneller abarbeiten kann.

    Aber ich werde noch mal drüber schauen, ob ich das "System" vielleicht doch etwas optimieren kann/soll.

    Vielen Dank nochmals, für die Unterstützung.


    Liebe Grüße,

    Arkantos
    Wenn Du nahe an der Hardware bist, solltest Du überlegen, nach C++ zu wechseln.
    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!

    ~Arkantos~ schrieb:

    Oder hab ich einen Geschwindigkeitsverlust dadurch? In diesem Falle kommt's mir auf jede Nanosekunde an.

    Er hat es sehr eilig.
    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!