Unsafe ... void*



  • Hallo!

    Erstmals versuche ich in C# mit Pointern zu arbeiten, habe aber ein kleines Konvertierungsproblem.

    Es gibt ja definierte Pointerarten, wie byte* usw. Wenn ich allerdings bestimmte Objekte als Pointer ablegen will benötigt man einen void* (stimmt doch, oder? ...)

    Nun ich kann zwar ein Objekt in einen void* verwandeln, aber wie kann ich das Objekt aus dem void* wieder rekonstruieren?

    unsafe
    {
        Point myPoint = new Point(1, 1);
        void* myFirstPointer = &myPoint;
        Point ret = (Point)myFirstPointer;  // das und viele andere varianten
                                             // schlagen fehl ...
    }
    

    Weiß jemand, wies richtig geht, oder bin ich mit dem void* auf dem falschen Dampfer?

    Danke schon mal!



  • ChrisPlusPlus schrieb:

    Hallo!

    unsafe
    {
        Point myPoint = new Point(1, 1);
        void* myFirstPointer = &myPoint;
        Point ret = (Point)myFirstPointer;  // das und viele andere varianten
                                             // schlagen fehl ...
    }
    

    Weiß jemand, wies richtig geht, oder bin ich mit dem void* auf dem falschen Dampfer?

    Ja, du bist mit void aufm falschen Dampfer 😉

    unsafe
    {
        Point myPoint = new Point(1, 1);
        Point* myFirstPointer = &myPoint;
        Point ret = *myFirstPointer;  
    }
    

Anmelden zum Antworten