Wann werden objekte per referenz übergeben?



  • Hallo,

    ich weiß bis jetzt, dass structs und die Basisdatentypen immer per Referenz rausgegeben werden, was auch bedeuted, dass man sie jederzeit verändern kann.

    Meine Frage(n):
    1. Ich habe ein generisches Interface , dass eine Property enthält, die mir ein Objekt zurückliefert. Kann ich irgendwie überprüfen, ob das nun eine Referenz auf den Wert ist oder nur der Wert?

    2. Kann ich irgendwie erreichen, dass mir ein getter immer eine Referenz (auch auf einen enum oder int) zurückgibt?



  • templäd schrieb:

    ich weiß bis jetzt, dass structs und die Basisdatentypen immer per Referenz rausgegeben werden, was auch bedeuted, dass man sie jederzeit verändern kann.

    structs werden eben nicht als Referenz übergeben. Klassen und Schnittstellen werden per Referenz übergeben, der Rest nicht.



  • Danke, hab mich genau vertippt bei meiner ersten Frage. Meinte natürlich, dass die structs nicht per Referenz übergeben werden.
    Zurück zu meiner anderen Frage.
    Folgendes Beispiel(in gekürzter Fassung):

    interface HasObject
    {
       public Object MyObject
       {
          get;
       }
    }
    

    Das ist ein Teil eines interfaces. Falls jemand interessiert was das bringt Erläuterung siehe ganz unten.

    Jetzt übergebe ich das Interface an ein Objekt nennen wir es Changer.
    Wenn dieser Changer jetzt etwas in der Art macht:

    ...
    hasObject.MyObject = xyz;
    

    dann wird im Falle eines structs oder eines enums z.B. das original Objekt nicht verändert. Im Falle einer Referenz schon. Kann man nun sagen, dass man immer eine Referenz haben will unabhängig vom Datentyp des Originals??

    Erläuterung:
    Ich benutze diese Schnittstelle um ein Objekt von einem PropertyGrid(ex) ändern zu lassen. Leider wird das Original nur (in meinem Fall) bei strings geändert, da ich bei anderen Typen keine Referenz bekomme grrr 😉


Anmelden zum Antworten