Laden...

Referenzen (wie in C++) in C#

Erstellt von t0mmi vor 12 Jahren Letzter Beitrag vor 12 Jahren 930 Views
Thema geschlossen
T
t0mmi Themenstarter:in
109 Beiträge seit 2007
vor 12 Jahren
Referenzen (wie in C++) in C#

seas!
wollte fragen, ob es in c# eine art referenz wie in c++ gibt.

also in c kann man ganz normal mit pointern arbeiten...
c++ wurde um die referenzen erweitert.. mit dieser einmaligen bindung

nun gibt es in c# bis auf die basisdatentyp nur mehr objekte,
weiters kann man ja bei methoden mit ref und out, sozusagen wie mit pointern arbeiten.

auch mit den klassen lässt sich im prinzip so wie mit c++ referenzen arbeiten.. also ohne iwas dereferenzieren zu müssen.

nun wollte ich wissen, ob man in c# (ohne unsafe oder intptr klasse) referezen auf jegliche variablen machen kann. also das man z.b. eine int referenz definiert, die im prinzip so benutzt werden kann wie ein int * in c...

mfg

G
538 Beiträge seit 2008
vor 12 Jahren

Meinst du das hier?

ref (C#-Referenz)

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

309 Beiträge seit 2008
vor 12 Jahren

Darauf gibt's ein ganz klares JEIN! 😉

In C# gibt es Referenz- und Wertetypen. Referenztypen verhalten sich wie Referenzen in C++, das sind Arrays, grob gesagt alle Objekte (und der String-Typ)

z.b:


class Foo
{
    int a;
            
    public int A
    {
        get { return a; }
        set { a = value; }
    }
}

// ...

Foo a = new Foo();
a.A = 1;

Foo b = aa;
b.A = 2; 

a.A hat danach auch den Wert 2, da a und b nur verschiedene Referenzen auf das selbe Objekt in Heap sind.

Wertetypen sind die ganzen primitven Datentypen wie int, long, Strukturen(!) und Enums.


int a = 1;
int b = a;

b = 2;

Hier ist a anschließend natürlich nicht 2.
Zu deiner Frage: Ohne unsafe oder Oder Pointer ist es in C# nicht möglich eine Referenz auf einen Wertyp zu erzeugen.

Siehe auch: Galileo Open Book: Visual C# 2008 3.3 Referenz- und Wertetypen
und
Werttypen (C#-Referenz)
Verweistypen (C#-Referenz)

Zur String-Klasse: Obwohl string eine Klasse und damit ein Refernztyp ist "fühlt" es sich wie ein Werttyp an, siehe: [FAQ] Besonderheiten der String-Klasse (immutabler Referenztyp mit Wertsemantik)

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo t0mmi,

wie das mit den Referenzen läuft, gehört zu den Grundlagen und ist in jedem guten C# Buch erklärt. Scavanger hat ja schon die entsprechenden Links gepostet.

Was die Gegenüberstellung von C++ und C# bezüglich Semantik von Variablen und Referenzen angeht siehe auch Grundsatzfrage: new-keyword und Objekterzeugung.

herbivore

Thema geschlossen