Problem mit Panel

dlooney

Mitglied
Hi all,

ich will ein Panel object an eine andere classe referenzieren. Meine idee war so

Code:
wiz = new Wizard(ref Panel p1);

und in Wizard steht es so

Code:
public Wizard(ref Panel p1)
{
    this.p1 = p1;
}

Sollte das nicht so gehen? Er meckert aber da bei mir.
 
Hi

Zum einen kannst du das ref Keyword weglassen.

Und du solltest schon sagen, wer wie meckert (FEHLERMELDUNG). Sonst wird schwierig mit helfen
 
hi,

vielen dank für die antwort. Ich weiss wo der fehler war wenn ich sag nur "den Wald vor lauter Bäumen nicht sehen". War ein dummer fehler ich darf ja nicht das Object angeben bei der übergabe. Das muss so lauten

Code:
// FALSCH
//wiz = new Wizard(ref Panel p1);

// CORREKT
wiz = new Wizard(ref p1);

// ODER OHNE REF
wiz = new Wizard(p1);

Das ref lass ich da weil ich nicht extra ein neues object haben will soweit ich weiss erzeugt C# dann doch kein neues Object oder ist das falsch?
 
Du verstehst da was falsch
C# ist Pointer-basiert. Du arbeitest immer auf einer Referenz des eigentlichen Objekts.
(Objekt im Heap, Pointer im Stack). Bei der Übergabe als Parameter wird das Prinzip Copy-By-Value genutzt (mit ref Keyword: By Reference). Dabei wird lediglich der Pointer kopiert. Das Objekt bleibt einmalig, ist dann aber 2 mal referenziert.
Das obere gilt für Reference Types. Bei Value Types (Buildin Types) ist der Unterschied, dass diese immer im Stack liegen. Auch diese werden by Value übergeben. Hier wird jedoch das Objekt kopiert.
 
Zurück