Refernezen und variabeln in .NET?



  • Ich befasse mich grad mit VB .NET, und hab mal ne frage bezüglich referenzen und variablen (vgl. C++ pointer , statische varaiblen)

    wenn ich in VB. NET bspw. ne klasse Dummy habe

    public class Dummy
    public Data as integer
    .
    .
    .
    end class
    

    und ich dann eine objekt A:

    Dim A as Dummy = new Dummy()
    A.data=5
    

    oder ein Objekt B:

    Dim B as Dummy
    B.data = 5
    

    Hab ich dann in A eine referenzen (vgl. Pointer C++) und in B ein statisches Objekt Variable??



  • Du hast in A eine Referenz auf ein Objekt und in B eine Referenz auf kein Objekt. B wird daher mit einer NullReferenceException abstürzen.



  • d.h. man kann in vb.net nur mit dynamischen objekte arbeiten?

    aufm stack anlegen geht nicht? oder muss ich amchen

    Dim B as Dummy = Dummy()
    

    ?



  • Eine Klasse (Class) liegt nie auf dem Stack). Dafür braucht du eine Struktur (Structure).

    public Structure DummyStructure
    public Data as integer
    .
    .
    .
    end Structure
    


  • ok, also definiv nicht verlgeichbar mit C++, welche statische udn dynamische allokierung von struktur und klassen zulässt?

    in VB.NET werden also Klassen nur dynamisch angelegt, und Strutkuren und statisch. Soweit richtig?

    noch ne frage

    mach ich bsow.

    Dim A as Dummy = new Dummy(X)
    
    //Mit A arbeiten
    
    A = new Dummy(Y)
    

    //Referenz überschreiben

    Wenn nich nun eine Referenz überschreibe, wird dann das objekt der alten Referenz über den carbage collector gelöscht, sobald ich ein neues obejkt mti new erzeuge?



  • Das mit Klassen und Strukturen hast du richtig verstanden.

    Wenn keine Referenz mehr auf ein Objekt verweist, wird es irgendwqann vom GC gelöscht. Es hat aber nichts mit dem neuen Objekt zu tuen. Du könntest z.B. auch a NOTHING zuweisen (NOTHING entspricht quasi 0).



  • ja gut weil ja die alte referenz auf das alte objekt zeigt wenn ich diese referenz übersfhreibe , ist das objekt ohne referenzbezug im speicher!! oder merkt sich der carbage collection dei referene extra ohne mein wissen?


Anmelden zum Antworten