Feedback

C# - Call by Reference - OUT

Veröffentlicht von am 27.04.2006
(1 Bewertungen)
Funktioniert genau wie Call by Reference, mit dem Unterschied das die Adressen der Übergabeparameter vor der Übergabe nicht initialisiert werden brauchen.
/* Beide Zahlen werden angelegt, dann werden beide Zahlen als Adresse an die Funktion CallByReferenceOUT übergeben,
 * dort werden diese Wertte bearbeitet, sie brauchen nicht zurückgegeben werden weil sie dort bearbeitet werden wo sie gerade
 * sind, im Speicher 
 * Besonderheit: die Adressen können übergeben werden ohne das die vorher initialisiert werden müssen
 */

private void button3_Click(object sender, System.EventArgs e)
{
	int Zahl1;
	int Zahl2;

        CallByReferenceOUT(out Zahl1, out Zahl2);

	textBox11.Text = Zahl1.ToString();
	textBox8.Text = Zahl2.ToString();
}

private void CallByReferenceOUT (out int Zahl1, out int Zahl2)
{
	Zahl1 = 1;
	Zahl2 = 2;
}
Abgelegt unter reference, out, pointer, Parameterübergabe.

1 Kommentare zum Snippet

nqfe schrieb am 26.02.2009:
Ganz so wie bei der Übergabe von ref Parametern ist es nun doch nicht.
Out Parameter müssen wie im obigen Beispiel beschrieben zwar nicht initialisiert werden. Bei einer Initialisierung kann aber im Gegensatz zu ref Parametern nicht auf den Wert zugegriffen werden.
Folgendes geht nicht.

static void Main(string[] args)
{
Int32 intZahl=123;
foo(out intZahl);
Console.Write(intZahl);
}

static void foo(out Int32 bar)
{
Console.Write(bar); //lesend zugreifen nicht möglich
}
}


Ebenso müssen bei Einsatz von out Parametern diese innerhalb der Methode initialisiert (zugewiesen) werden.

static void Main(string[] args)
{
Int32 intZahl;
foo(out intZahl);
Console.Write(intZahl);
}

static void foo(out Int32 bar)
{
Console.Write("Hallo");
//Fehler: fehlende Zuweisung von bar
}
}
 

Logge dich ein, um hier zu kommentieren!