C# Referenzen



  • folgendes Frage:

    unter C++ geht folgendes:

    zeiger_stack -> zeiger_heap -> zeiger_heap -> .... -> objekt
    

    geht das auch irgendwie in C# mit Referenzen?

    Meine momentane Einschätzung ist nein aber ich würde mich gerne eines Besseren belehren lassen!



  • Was soll nicht gehen? Drück dich mal klarer bitte aus.



  • Optimizer schrieb:

    Was soll nicht gehen? Drück dich mal klarer bitte aus.

    na ja das was ich da oben für c++ hingeschrieben hab

    ein zeiger auf dem stack zeigt auf einen auf dem heap der wiederum wieder auf einen auf dem heap usw. bis dann irgendwann mal ein zeiger auf ein objekt zeigt.

    und das jetzt nicht in c++ sondern c#

    ob das geht, das wollte ich wissen



  • Zeiger auf Zeiger kannst du im unsafe-Kontext benutzen, oder du schreibst dir eine Referenz-Klasse (gut möglich, dass es sowas schon gibt), die eine Referenz beinhaltet. Dann ist diese Klasse ein Referenztyp und enthält selber wieder eine Referenz.

    Das kann unter bestimmten Umständen durchaus Sinn machen, weil dann sehr viele Objekte indirekt ein bestimmtes Objekt referenzieren können und du auf einen Schlag alle Referenzen auf ein anderes Objekt umleiten kannst.

    Deinen Anwendungsbereich kenn ich jetzt natürlich nicht.



  • C# hat auch "Zeiger". Auch, wenn man das nicht so direkt sieht.

    wenn du in deinem Code eine Variable definierst

    Hashtable hash = null;
    

    dann liegt die Variable "hash" im Stack.

    wenn du jetzt aber sagst

    hash = new Hashtable();
    

    dann wird ein Objekt im Heap erstellt und hash zeigt / verweist auf das objekt. Das Objekt kann wiederrum auf andere Objekte verweisen.

    Ob man das jetzt Zeiger oder Referenzen nennt oder ob mann mit -> oder einem . die trennt, spielt gar keine Rolle.

    owenn du "richtigen" Zeiger nutzten willst, dann kannst du es so machen, wie Optimizer schrieb.



  • Online schrieb:

    volgendes Frage:

    Folgender Tipp: Lern Deutsch



  • tjaaaaaaaaaaaaaa schrieb:

    Online schrieb:

    volgendes Frage:

    Folgender Tipp: Lern Deutsch

    mal gut das das v direkt unter f liegt 😉

    C# hat auch "Zeiger".

    ist klar, nur das es bei C# ja Referenzen heißt und nicht Zeiger es sei den du benutzt unsafe

    Deinen Anwendungsbereich kenn ich jetzt natürlich nicht.

    Das da unten war mal eine Aufgabe beim Progen. 1 Zeiger auf dem Stack, 2 auf dem Heap und ein Objekt auf dem Heap

    int ***stack;
        stack = new int**;
        *stack = new int*;
        **stack = new int(42);
    

    jetzt hab ich ne Abschrift einer alten Klausur in die Hand gekriegt da stand die gleiche Aufgabe drin nur man soll es in C# erstellen und da hat sich bei mir irgendwie ein Wiederspruch ergeben.
    ich bin halt der Meinung das es so direkt über Referenzen nicht geht und unsafe sollten wir da bestimmt nicht benutzen also bin ich der Ansicht das die Abschrift falsch ist.

    😕


Anmelden zum Antworten